командная строка unix для встроенной замены всех новых строк в файле с помощью
\ n

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

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

7
задан Josh Darnell 13 January 2012 в 15:40
поделиться

4 ответа

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

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

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

sed 's/$/<br>/' mytext.txt > mytext.txt.new && mv mytext.txt.new mytext.txt
11
ответ дан 6 December 2019 в 14:00
поделиться

Для полноты картины. В 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 : edit-ed

3
ответ дан 6 December 2019 в 14:00
поделиться

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

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

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

1
ответ дан 6 December 2019 в 14:00
поделиться

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

sed 's/$/<br>/' mytext.txt > mytext2.txt && mv mytext2.txt mytext.txt
0
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: