The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Поиск и замена в файлах, !*! 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

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




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

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