Пропустить навигацию.

sed и gsed: заменить через ssh во всех файлах подсроку на другую подстроку в примерах

user warning: Got error 28 from storage engine query: SELECT t.*,v.weight AS v_weight_unused FROM term_node r INNER JOIN term_data t ON r.tid = t.tid INNER JOIN vocabulary v ON t.vid = v.vid WHERE r.vid = 23 ORDER BY v.weight, t.weight, t.name in /var/www/multi/data/multi/modules/taxonomy/taxonomy.module on line 640.

В *nix есть утилита sed, это поточный редактор.

В плане замены строк sed работает так:

sed -e 'e/aaa/bbb/g' file.txt > file.txt

Все вхождения подстроки aaa будут заменены на bbb. Если убрать инструкцию «g», то будет заменено только единственное вхождение, а не глобально.

У sed есть более функциональный брат-последователь GNU sed, во FreeBSD его можно найти в портах как gsed, установим:

cd /usr/ports/textproc/gsed
make config && make install && make clean

Не забывайте после установки выполнить
rehash
чтобы заставить FreeBSD перечитать файлы и обращаться к gsed без указания пути к программе.

gsed нам понадобиться чтобы без постройки велосипеда во FreeBSD заменить во всех файлах одну строку на другую:
gsed -i 's/aaa/bbb/g' *

Конечно, приведённый пример — лишь капля из возможностей sed и GNU sed, но, как показывает вебмастерский опыт — наиболее востребованный.