sed - редактирование файлов "на лету"

Часто встречаются ситуации, когда нужно отредактировать единым образом группу текстовых файлов. Например, заменить названия в ряде выравниваний. Конечно, можно раскочегарить любимый Perl-редактор и написать простенькую программку. Но обычно быстрее воспользоваться и другим инструментом - потоковым редактором sed.

Редактор sed читает файлы построчно и редактирует каждую строку согласно правилам, определённым в sed-скрипте (простой язык скриптов, считается прародителем Perl и awk)

Следующий пример демонстрирует типичное использование sed. Это замена во всем файле (конечно, можно использовать wildcards):

>  sed -e 's/oldstuff/newstuff/g' inputFileName > outputFileName

 

Здесь s — замена; g — глобально (правда, это вы уже где-то видели?). Так что вся сила регулярных выражений теперь вызывается с помощью однострочного заклинания в командной строке.

ключ -e (expression) указывает на скрипт

По умолчанию, sed выводит данные в выходной поток, но можно включить прямое (in-place) редактирование файлов с помощью ключа -i.

Например, следующая команда переконвертирует в каталоге все txt-файлы из DOS-кодировки в UNIX-кодировку:

> sed -e 's/\r$//' -i *.txt

 

 

Редактор sed доступен для любой ОС.