21 Январь 2009

unix/linux — замена строки в файлах

posted in Разработка, Софт |

Для замены сроки в одном файле можно использовать команду sed:

sed '/s/старое/новое/g' file.txt > file2.txt
и потом mv file2.txt file.txt

но у вас вероятно будет доступна опция -i, этой команды, что позволит менять внутри строки файла:

sed -i '/s/старое/новое/g' file.txt

Чтоб сделать одинаковую замену вов сех файлах, скажем текущей директории, необходимо написать небольшой скриптик, назовем его strreplace.sh


for FILE in $@; do
sed -i 's/old/new/g' $FILE
done

теперь запустим strreplace.sh с параметром — списком файлов.
для текущей директории это будет: strreplace.sh *

У нас 8 комментариев на запись “unix/linux — замена строки в файлах”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 10.09.2010, aliks-os said:

    Спасибо — помогло, другие советы по использованию команды sed которые опубликованы в инете не сработали

  2. 2 On 22.06.2011, Konstantin said:

    sed: 1: «/usr/local/…»: extra characters at the end of l command

    пришлось заменить на:
    sed -i » -e ‘s/old/new/g’

  3. 3 On 18.08.2011, I am said:

    sed -i ‘/s/старое/новое/g’ *.txt

  4. 4 On 19.08.2011, scorpio said:

    это если все файлы с расширением txt

  5. 5 On 15.01.2012, Колян said:

    А если надо заменить site.ru/images на site.com/images

  6. 6 On 29.04.2013, Alexey said:

    Можно без скрипта одной командой grep -lr -e ‘было’ . | xargs sed -i ‘s/было/стало/g’

  7. 7 On 20.02.2014, Дмитрий said:

    Alexey, спасибо.

  8. 8 On 15.08.2014, Алексей said:

    Как заменить строку с пхп кодом?

Оставить комментарий