Какую команду unix мы можем использовать, чтобы добавить некоторый текст к определенной строке в файле?

StackOverflow https://stackoverflow.com/questions/602921

  •  03-07-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает о серии команд unix, которые позволяют кому-либо добавлять некоторый текст в конец определенной строки в файле?

например

Строка 1

Строка 2

Строка 3

Строка 4

Я хочу добавить текст "дополнительная информация" в строку 3, чтобы файл теперь выглядел следующим образом:

Строка 1

Строка 2

Строка 3, дополнительная информация

Строка 4

Это было полезно?

Решение

Perl:

perl -p -e's{\n}{, extra information\n} if $. ==3' myfile

$.это номер строки

Другие советы

в awk это:

awk '{s=$0; if( NR==3 ){ s=s ", Extra Information" } print s;}' myfile > newfile

правильная версия sed:

sed -e '3s/$/, Extra Information/' -i myfile

Вот версия с портативным sed (без опции -i):

sed '3s/$/Hello World/' myfile

Обратите внимание , что myfile не модифицируется, поэтому вы можете исправить возможные ошибки.

awk 'NR == 3 { print $0 ", extra information" } NR != 3' myfile

Часть перед фигурными скобками - это состояние:Если мы находимся в строке 3, мы добавляем некоторый текст.Если фигурные скобки опущены, действие по умолчанию - просто распечатать $0.Перенаправление на новый файл или канал в другую программу, если это необходимо.Вы не можете перенаправить на тот же файл, который вы только что прочитали.Обычным обходным решением является перенаправление на новый файл, а затем переход к нему, если команда выполнена успешно:

somecommand > oldfile.tmp && mv oldfile.tmp oldfile
sed -e "s/^Line 3/\0, extra info/" -i text.txt

Если вы хотите, чтобы дополнительная информация была добавлена только в одну строку, подойдет любая из однострочных команд sed / awk.

Если вы хотите добавить что-либо (почти) к каждой строке в файле, вам следует создать второй файл с дополнительной информацией для каждой строки и использовать paste:

$ cat myfile
line 1
line 2
line 3
line 4
$ cat extra 
something

something else
$ paste myfile extra
line 1  something
line 2
line 3  something else
line 4
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top