Linuxでファイルの終わりに追加する方法

このチュートリアルでは、Linuxでファイルの最後にテキストを追加するさまざまな方法を学びます。 Linuxではいくつかの方法を使用してこれを実現できますが、最も簡単な方法は、コマンド出力を目的のファイル名にリダイレクトすることです。 >>文字を使用すると、任意のコマンドの結果をテキストファイルに出力できます。

これを実現できる他の方法は、tee、awk、sedなどのLinuxツールを使用することです。

コマンドまたはデータの出力をファイルの終わりにリダイレクトします

すべてのUnixベースのオペレーティングシステムには、「出力を送信するためのデフォルトの場所」という概念があります。 誰もがそれを「標準出力」または「stdout」と呼び、標準出力と発音します。 あなたのシェル(おそらく bash またはzsh)は常にそのデフォルトの出力場所を監視しています。 シェルがそこで新しい出力を見ると、それを画面に出力して表示できるようにします。

>>演算子を使用して、その出力をファイルにリダイレクトできます。

手順は次のとおりです。

echoコマンドを使用してファイルの終わりにテキストを追加します。

echo 'sample text line' >> filename.txt

コマンド出力をファイルの終わりに追加します。

command >> filename.txt

ファイルの終わりに行を追加する

このリダイレクト文字>>を使用してテキスト行を追加するか、データとコマンド出力をテキストファイルに書き込むことができます。 この方法を使用すると、ファイルが存在しない場合にファイルが作成されます。

にとって example:

$ echo "sample line" >> test.txt
$ cat test.txt
sample line

$ echo "sample line 2" >> test.txt
$ cat test.txt
sample line
sample line 2

コマンドデータ出力結果をファイルの終わりに追加します

データを追加したり、コマンドを実行して、目的のファイルに出力を追加したりすることもできます。 これで example、現在の日付をファイルに追加するためにdateを使用します。unameコマンド-使用しているLinuxシステムのカーネルバージョンを出力し、最後に現在のディレクトリ構造とファイルリストを出力するlsコマンドを使用します。
結果をターミナルに出力できる任意のコマンドを使用できます。これは、Linuxのほとんどすべてのコマンドラインツールを意味します。

$ date >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019

$ uname -r >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
3.13.0-170-generic

$ ls >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
3.13.0-170-generic
test.txt

別の方法

tee、awk、sedLinuxユーティリティを使用して追加する方法を見てみましょう。

teeコマンドラインツールの使用

Teeコマンドは、標準入力を読み取り、それを標準出力と1つ以上のファイルの両方に書き込みます。 このコマンドは、配管で使用されるTスプリッターにちなんで名付けられています。 プログラムの出力を中断して、表示とファイルへの保存の両方ができるようにします。

$ tee -a test.txt <<< "appended line of text"
vagrant@ubuntu-trusty-64:~$ cat test.txt
appended line of text

awkコマンドラインツールの使用

Awkは、プログラマーが、ドキュメントの各行で検索されるテキストパターンと、一致するものが見つかったときに実行されるアクションを定義するステートメントの形式で、小さいながらも効果的なプログラムを作成できるようにするユーティリティです。ライン。 Awkは主にパターンのスキャンと処理に使用されます。

$ awk 'BEGIN{ printf "another text line appended" >> "test.txt" }'
vagrant@ubuntu-trusty-64:~$ cat test.txt
another text line appended

sedコマンドラインツールの使用

Linuxのsedコマンドはストリームエディタの略で、検索、検索と置換、挿入、削除など、ファイルに対して多くの機能を実行できます。 sedを使用すると、ファイルを開かなくてもファイルを編集できます。これにより、ファイル内のファイルをすばやく見つけて置き換えることができます。

$ sed -i '$a yet another text line' test.txt
vagrant@ubuntu-trusty-64:~$ cat test.txt
yet another text line

ファイルに複数の行を追加する

一度に複数の行をファイルに追加する方法はいくつかあります。
もちろん、1行ずつ追加することもできます。

$ echo "line 1" >> result.txt
$ echo "line 2" >> result.txt

次の変形は、ターミナルに改行を入力することです。

echo "line 1
line 2
line 3" >> result.txt

もう1つの方法は、ファイルを開いて、EOTと入力するまで行を書き込むことです。

$ cat <<EOT >> result.txt
line 1
line 2
EOT

結論

テキスト行またはデータとコマンド出力をファイルに追加する方法は複数ありますが、最も簡単な方法は>>リダイレクト文字を使用することです。 ファイル内の特定の行番号の末尾、または正規表現を使用して行の途中にテキストを追加する方法はありますが、それについては他の記事で説明します。

コメントセクションで、ファイルの最後に追加するのに最適な方法を教えてください。