The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Поиск и замена в файлах"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Поиск и замена в файлах"
Сообщение от vavcg Искать по авторуВ закладки on 22-Авг-03, 16:15  (MSK)
Кто-нибудь писал скрипт на sh , чтобы он начиная с определенной директории
просматривал все файлы по маске и заменял там одно выражение на другое ???
Ну, короче, replace-р такой .
Если есть возможность, приведите, пожалуйста текст .
Спасибо .
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Поиск и замена в файлах"
Сообщение от konst emailИскать по авторуВ закладки on 22-Авг-03, 16:50  (MSK)
>Кто-нибудь писал скрипт на 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

- но надо быть осторожным!!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Поиск и замена в файлах"
Сообщение от vavcg Искать по авторуВ закладки on 22-Авг-03, 17:13  (MSK)
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 - что искать/на что заменять

Правильно ???
Кстати, тут без перла не обошлось...
А просто на шелле можно ???

И почему надо быть осторожным ???

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Поиск и замена в файлах"
Сообщение от konst emailИскать по авторуВ закладки on 22-Авг-03, 17:30  (MSK)
>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$" `

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Поиск и замена в файлах"
Сообщение от vavcg Искать по авторуВ закладки on 22-Авг-03, 17:37  (MSK)
Понятно, но про шелл я имел в виду следующее :
Как я из логов апача ip выцепляю -

cut -f1 -d' ' /usr/local/apache/logs/access_log | sort | uniq -c | sort -r > /usr/local/apache/htdocs/stat/ip.txt

Думал, можно и замену проделать в том же духе...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Поиск и замена в файлах"
Сообщение от vavcg Искать по авторуВ закладки on 22-Авг-03, 18:51  (MSK)
Посидел я тут и придумал такую штуку.
Система 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

У меня работает !


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру