Поиск и замена в файлах, vavcg, 22-Авг-03, 16:15 [смотреть все]Кто-нибудь писал скрипт на sh , чтобы он начиная с определенной директории просматривал все файлы по маске и заменял там одно выражение на другое ??? Ну, короче, replace-р такой . Если есть возможность, приведите, пожалуйста текст . Спасибо .
|
- Поиск и замена в файлах, konst, 16:50 , 22-Авг-03 (1)
>Кто-нибудь писал скрипт на sh , чтобы он начиная с определенной директории > >просматривал все файлы по маске и заменял там одно выражение на другое >??? >Ну, короче, replace-р такой . >Если есть возможность, приведите, пожалуйста текст . >Спасибо . for i in `find DIRECTORY | grep ".txt$"`;do tmpF=$i"_tmpZ" cat $i | perl -ne "s/first/second/;print;' > $tmpF mv -f $tmpF $i done- но надо быть осторожным!!!
- Поиск и замена в файлах, vavcg, 17:13 , 22-Авг-03 (2)
for i in `find DIRECTORY | grep ".txt$"`;do tmpF=$i"_tmpZ" cat $i | perl -ne "s/first/second/;print;' > $tmpF mv -f $tmpF $i done Я так понял : DIRECTORY - начальная директория для поиска .txt - маска файла first/second - что искать/на что заменять Правильно ??? Кстати, тут без перла не обошлось... А просто на шелле можно ??? И почему надо быть осторожным ???
- Поиск и замена в файлах, konst, 17:30 , 22-Авг-03 (3)
>for i in `find DIRECTORY | grep ".txt$"`;do >tmpF=$i"_tmpZ" >cat $i | perl -ne "s/first/second/;print;' > $tmpF >mv -f $tmpF $i >done > >Я так понял : > >DIRECTORY - начальная директория для поиска >.txt - маска файла >first/second - что искать/на что заменять > >Правильно ??? ДА >Кстати, тут без перла не обошлось... >А просто на шелле можно ??? можно пользовать sed или awk (я не помню синтаксис см.man sed | awk), или perl - у него возможностей больше - можно "навароченные regexp'ы использовать. Сам shell - это всего лишь оболочка из которой вызываются сторонние програмки > >И почему надо быть осторожным ??? Сначала закоментируй строчку mv -f - посмотри на результат во временных файлах - если устраивает - раскомментируй (но в любом случае создай архив из изначальных файлов tar -czvf original.tgz `find DIRECTORY | grep "[.]txt$" `
- Поиск и замена в файлах, vavcg, 17:37 , 22-Авг-03 (4)
Понятно, но про шелл я имел в виду следующее : Как я из логов апача ip выцепляю -cut -f1 -d' ' /usr/local/apache/logs/access_log | sort | uniq -c | sort -r > /usr/local/apache/htdocs/stat/ip.txt Думал, можно и замену проделать в том же духе...
- Поиск и замена в файлах, vavcg, 18:51 , 22-Авг-03 (5)
Посидел я тут и придумал такую штуку. Система FeeBSD. Ставим из портов /usr/ports/textproc/replaceit - заменяет в файле что-то на что-то. А дальше, как мне советовали (ну, почти) :Содержимое файла replace.sh : for i in `find $1 | grep "$2$"`;do cp $i $i.bak /usr/ports/textproc/replaceit/work/replaceit-1.0.0/replaceit --input=$i "$3" "$4" done Использование : ./replace.sh directory-to-parse file-mask what with-what У меня работает !
|