Добавить текст в файл из командной строки без использования перенаправления ввода-вывода


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

4 53

4 ответа:

если вы не возражаете против использования 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 означает преобразование inplace, поэтому все изменения будут происходить в указанном вами файле
  • $ используется для указания последней строки
  • a означает добавить строку после
  • \ просто используется в качестве разделителя

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

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

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

N. B. В то время как >> может выглядеть как признак переадресации, это просто режим открытия файла, в данном случае "добавить".

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

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

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

можно использовать --append особенность tee:

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

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