командная строка unix для встроенной замены всех строк в файле на <br>\ n - PullRequest
7 голосов
/ 17 августа 2010
sed 's/$/<br>/' mytext.txt

работал, но выводил все это в командной строке.Я хочу, чтобы он просто делал замену в указанном файле.Должен ли я использовать другой инструмент?

Ответы [ 4 ]

11 голосов
/ 17 августа 2010

Если у вас есть gnu sed, вы можете использовать опцию -i, которая сделает замену на месте.

sed -i 's/$/<br>/' mytext.txt

В противном случае вам придется перенаправить в другой файл и переименовать его поверх старого.

sed 's/$/<br>/' mytext.txt > mytext.txt.new && mv mytext.txt.new mytext.txt
3 голосов
/ 17 августа 2010

Просто для полноты. В Mac OS X (которая использует FreeBSD sed) вы должны использовать дополнительную нулевую строку "" для редактирования файла на месте без резервного копирования:

sed -i "" 's/$/<br>/' mytext.txt

В качестве альтернативы использованию sed для редактирования файлов на месте без резервного копирования вы можете использовать ed (1), который, однако, считывает весь файл в память перед началом работы с ним.

printf '%s\n' H 'g/$/s//<br>/g' ',p' | ed -s test.file  # print to stdout

printf '%s\n' H 'g/$/s//<br>/g' wq | ed -s test.file  # in-place file edit

Для получения дополнительной информации о ed (1) см .:

«Редактирование файлов с помощью редактора ed из скриптов»,

http://wiki.bash -hackers.org / doku.php ID = HOWTO: редактировать-эд

1 голос
/ 17 августа 2010

Если у вас есть актуальная версия sed, просто используйте sed -i или sed --in-place, которая изменит сам фактический файл.

Если вы хотите создать резервную копию, вам нужно предоставитьсуффикс для этого.Поэтому sed -i.bak или sed --in-place=.bak создаст файл резервной копии с суффиксом .bak.

Используйте это!Шутки в сторону!Вы очень оцените это в первый раз, когда вы повредите свой файл из-за неправильно набранной команды sed или неверного предположения о данных в файле.

0 голосов
/ 17 августа 2010

Используйте символ перенаправления, т.е.

sed 's/$/<br>/' mytext.txt > mytext2.txt && mv mytext2.txt mytext.txt
...