This is a forwarded message
From: Max Belugin <be...@ma...>
To: fid...@ta... <fid...@ta...>
Date: Wednesday, November 19, 2003, 11:13:03 AM
Subject:
===8<==============Original message text===============
Hello fido7,
SU> Задача: Есть куча тестовых файлов. Требуется просканировать все эти
SU> текстовые файлы и получить список всех строк, содержащих определенную
SU> подстроку и записать его в текстовый файл log-файл в следующем формате:
SU> <Имя файла1>:
SU> строка1
SU> строка2
SU> ...
SU> <Имя файла2>:
SU> строка1
SU> строка2
SU> ...
SU> итд.
SU> Есть готовое решение? Желательно привести реальный пример.
Это простой скрипт. Вот например на Питоне, а ниже на js
searcher.py:
# -*- coding: cp1251 -*-
import os
import re
searchString="test"
# для всех файлов в текущей папке
for fileName in os.listdir("."):
fileNamePrinted=False
# если совпадает с маской
if re.match(".*\.txt$", fileName, re.I):
# для каждой строки файла
for line in file(fileName):
# если есть строка поиска
if line.find(searchString)!=-1:
# если еще не напечатали имя файла
if not fileNamePrinted:
# печатаем его
print fileName+":"
# и запоминаем этот факт
fileNamePrinted=True
# печатаем строку
print line
searcher.js:
var searchString="test";
var fs //: FileSystemObject
= new ActiveXObject("Scripting.FileSystemObject");
var folder // : Folder
= fs.GetFolder(".");
var eFiles=new Enumerator(folder.Files);
for (;!eFiles.atEnd(); eFiles.moveNext()){
var fileNamePrinted=false;
var file //:File
= eFiles.item();
if(file.Name.match(/.*\.txt$/i)){
var src //:TextStream
=file.OpenAsTextStream();
while(!src.AtEndOfStream){
var s // :String
=src.ReadLine();
if(s.indexOf(searchString)!=-1){
if(!fileNamePrinted){
WScript.Echo(file.Name+":");
fileNamePrinted=true;
}
WScript.Echo(s);
}
}
}
} //Files collection
Best regards,
Max
http://farplugins.sf.net
ICQ:9406811
===8<===========End of original message text===========
--
Best regards,
Max mailto:be...@ma...
http://belugin.newmail.ru ICQ:9406811
|