web-dev-qa-db-ja.com

IOリダイレクトを使用せずにコマンドラインからファイルにテキストを追加する

Ioリダイレクトを使用せずに、1行のコマンドでファイルにテキストを追加するにはどうすればよいですか?

55
apoorv020

sed を使用してもかまわない場合は、

 $ catテスト
これは1行目です。 ]これは1行目です
これはリダイレクトなしの2行目です

ドキュメントを読むのに少し時間がかかるかもしれないので、いくつかの説明:

  • -iはインプレース変換を意味するため、指定したファイルですべての変更が発生します
  • $は最後の行を指定するために使用されます
  • aは、後に行を追加することを意味します
  • \は単に区切り文字として使用されます
61
taskinoor

手で何かをタックしたいだけなら、sedの回答が役に立ちます。代わりに、テキストがファイル内にある場合(たとえば、file1.txtおよびfile2.txt):

Perlの使用:

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

N.B. >>はリダイレクトの指示のように見える場合がありますが、これは単なるファイルオープンモードであり、この場合は「追加」です。

5
Joel Berger

ExモードでVimを使用できます。

ex -sc 'a|BRAVO' -cx file
  1. aテキストを追加

  2. x保存して閉じる

2
Steven Penny

tee--append機能を使用できます:

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で出力をミュートできます。

1
Ondra Žižka