Добавлять текст в файл из командной строки без использования перенаправления io - PullRequest
54 голосов
/ 09 января 2011

Как добавить текст в файл с помощью однострочной команды без перенаправления io?

Ответы [ 4 ]

61 голосов
/ 09 января 2011

Если вы не возражаете против использования sed , тогда

$ cat test 
this is line 1
$ sed -i '$ a\this is line 2 without redirection' test 
$ cat test 
this is line 1
this is line 2 without redirection

Поскольку документация может быть немного длинной, некоторые объяснения:

  • -i означает преобразование на месте, поэтому все изменения будут происходить в указанном вами файле
  • $ используется для указания последней строки
  • a означает добавление строки после
  • \ просто используется в качестве разделителя
5 голосов
/ 09 января 2011

Если вы просто хотите что-то прикрепить вручную, тогда ответ sed будет работать для вас. Если вместо этого текст находится в файле (файлах) (например, file1.txt и file2.txt):

Использование Perl:

perl -e 'open(OUT, ">>", "outfile.txt"); print OUT while (<>);' file*.txt

N.B. хотя >> может выглядеть как указатель на перенаправление, это просто режим открытия файла, в данном случае «append».

2 голосов
/ 05 ноября 2016

Вы можете использовать Vim в режиме Ex:

ex -sc 'a|BRAVO' -cx file
  1. a добавить текст

  2. x сохранить и закрыть

1 голос
/ 16 июля 2018

Вы можете использовать --append функцию tee:

cat file01.txt | tee --append bothFiles.txt 
cat file02.txt | tee --append bothFiles.txt 

или короче,

cat file01.txt file02.txt | tee --append bothFiles.txt 

Я предполагаю, что приходит запрос на отсутствие перенаправления (>>)от необходимости использовать это в xargs или аналогичном.Так что, если это не считается, вы можете отключить вывод с помощью >/dev/null.

...