ウェブサイト検索

Linuxでファイルにテキストを追加する7つの方法


あなたのLinuxの知識を増やしましょう。

既存の内容があるテキストファイルがあり、そこにさらにテキストを追加する必要がある場合があります。幸いなことに、これを行うために使用できるいくつかのLinuxコマンドがあります。これらのコマンドの中には、ファイルの任意の場所にテキストを挿入するのに十分強力なものもあります。

まずテキストファイルを作成してください!

チュートリアルに沿って進めるには、行を追加して結果を見ることができるテストファイルを用意しておく必要があります。Linuxで空のファイルを作成するには、以下のコマンドを実行してください:

touch <filename>

をファイル名に置き換えます。例えば、append.txtという名前にします。このコマンドでファイルを作成できます:

touch append.txt

ファイルの内容を見るには、次のように実行してください:

cat append.txt

現在、ファイルにはコンテンツがないため、何も出力されません。空のファイルができたので、いくつかの行を追加できます。

1. echoを使用してファイルにテキストを追加する

echo コマンドは主にターミナルにテキストを表示するために使用されますが、ファイルにテキストを追加するためにも使用できます。基本的な構文は次のとおりです:

echo [OPTION] [STRING]

ファイルに行を追加するためにechoコマンドを使用するには、リダイレクション演算子(>)の助けが必要です。echoコマンドを使用してファイルにテキスト行を追加するには、以下を実行してください:

echo "string" > filename

ダブルクオート内の実際のテキストで「string」を置き換え、「filename」についても同様にします。たとえば、「append.txt」に「これはファイルです」というテキストを追加したい場合は、次のように実行します:

echo "This is a file" > append.txt

今、catコマンドを使ってファイルの内容を読もうとすると、その行が出力に表示されるはずです。

しかし、単一のリダイレクションオペレーター(>)を使用すると、ファイルに行を追加することはできません。同じコマンドを使用して上記のファイルに別の行を追加しようとすると、既存の内容が上書きされます。それを実際に見てみましょう。以下のコマンドを実行してください。

echo "Trying to append a line to the file" > append.txt

では、これをどのように克服するのでしょうか?簡単です。ファイルの内容を上書きせずにテキストを追加するには、別のリダイレクションオペレーター(>>)を使用します。以下のように:

echo "Trying to append a line to the file" >> append.txt

今回は、予想通り、行がファイルに追加されます。

2. catコマンドを使用してファイルにテキストを追加する

以前見たように、catコマンドはファイルの内容をターミナルに表示します。このコマンドの基本的な構文は次のとおりです:

cat [OPTION]... [FILE]...

エコーコマンドとは異なり、catコマンドはパラメーターとして文字列を直接使用することはできません。代わりに、1つのファイルの内容を別のファイルに追加することができます。そのためには、以下のようにコマンドを使用します:

cat file1 >> file2

「file1」と「file2」を実際のファイル名に置き換えてください。したがって、前回の例では、別のファイルの内容をappend.txtファイルに追加することができます。

cat anotherfile.txt >> append.txt

cat コマンドを使うもう一つの良い方法は、複数のファイルの内容を一つのファイルに連結することです。そのためには、次のようにファイル名を引数として指定します:

cat file1 file2 file3 >> file4

例えば、3人の異なる従業員の情報が含まれている3つの異なるテキストファイルがあるとします。それらを1つのファイルに結合する必要があります。そのために、次のように実行します:

cat employee1.txt employee2.txt employee3.txt >> employees.txt

3. printfを使用してファイルの末尾にテキストを追加する

Cプログラミング言語に経験があるなら、printfに馴染みがあるかもしれません。しかし、printfがLinuxのツールでもあることをご存知でしたか?名前が示すように、標準出力にテキストやデータを印刷することができます。ここに基本的な構文があります:

printf FORMAT [ARGUMENT]...

printfを使用してファイルにテキストを追加するには、次のように実行します:

printf "Using printf to append text" >> append.txt

ただし、ご覧のとおり、echoコマンドとは異なり、テキストには改行が追加されていません。これは、手動で行う必要があることを意味します。テキストの最後に「\n」エスケープ文字を使用できます。では、それを使ってみましょう。

printf "Using printf to append text with a new line\n" >> append.txt

今回は、ターミナルプロンプトが前回とは異なり、新しい行にあります。

4. sedを使用して

sedコマンドは、ストリームエディタの略で、入力に対して基本的なテキスト変換を行います。このコマンドの使い方はいくつかあります。ファイルにテキストを追加する基本的な構文は、以下のようになります:

sed [OPTION] [SCRIPT] [FILE...]

では、ファイルに行を追加する方法を見てみましょう。そのためには、以下のコマンド形式に従ってください:

sed -i '$ a\<text to append>' <file name>

角括弧 (<>) の内部のテキストを、それぞれテキスト文字列とファイル名に置き換えてください。ファイルの最後に行を追加したい場合は、次のコマンドを実行します:

sed -i '$ a Do not feel sed' append.txt

「-i」オプションは、システムに対して、該当するファイルを使用してテキストを挿入することを伝えます。「$」記号は、行がファイルの最後に追加されることを意味します。テキストの前に「a」を追加することで、既存のファイルの内容に行を追加したいことをシステムに伝えます。

sedコマンドの良い点の一つは、ファイルのどこにでもテキストを追加できることです。例えば、4行目の後に何かを追加したい場合は、次のようにコマンドを使います:

sed -i '4 a Appended after the fourth line' append.txt

今回は、4行目の直後に行が追加されました。

5. ティーを使ってファイルにテキストを追加する

teeコマンドは、標準入力から読み取って、その出力をファイルに書き込むことができます。基本的な構文は以下の通りです:

tee [OPTION]... [FILE]...

teeコマンドを使用してファイルにテキストを追加する方法は2つあります。"-a"オプションを使用するか、二重リダイレクション演算子を使います。まず最初の方法を見てみましょう。

tee -a append.txt

コマンドを実行すると、インタラクティブモードに入ります。任意のテキストを書いてEnterを押すと、ファイルに追加されます。その際、ターミナルに同じテキストが出力されます。プロンプトを終了するには、Ctrl+Dを押してください。

別の方法では、ターミナルが入力した文字列を繰り返さないため、プロセスが非常にクリーンになります。それ以外は同じように動作します。こちらがコマンドです:

tee >> append.txt

ご覧のとおり、文字列を入力したとき、それは再びターミナルに表示されませんでした。

6. awkを使用して

awkコマンドは、テキスト操作に関して非常に強力です。少し調整することで、このコマンドを使ってファイルにテキストを追加できます。以下にコマンドの構文を示します:

awk 'BEGIN{print "Feeling awkward"}' >> append.txt

上記の例では、awkコマンドのBEGINルールを使用して、テキストを印刷し、リダイレクション演算子を使ってターゲットファイルに送信しました。

7. テキストエディタを使用してテキストを追加する

これはかなり簡単です。コマンドを使うのが嫌いだったり、構文を覚えるのが難しいと感じるのであれば、任意のLinuxテキストエディタを使用してテキストファイルに行を追加することができます。このチュートリアルでは、nanoテキストエディタを使用します。

nanoでファイルを開くには、以下のコマンドを使用します:

nano <filename>

上記のコマンドで<filename>を実際のファイルのパスに置き換えるのを忘れないでください。エディタでファイルが開かれたら、矢印キーを使ってテキストを移動し、キーボードを使って好きなことを入力できます。

行を追加するには、下矢印キーを使ってファイルの一番下に移動するだけです。新しい行を作成するには、Enterキーを押してください。その後、好きなテキストを入力します。最後に、Ctrl+Oを使ってファイルを保存し、Ctrl+Xを使ってエディタを終了します。

コマンドの出力をファイルにリダイレクトする方法

コマンドの出力をファイルに保存したい場合は、リダイレクション演算子(>>)を使います。現在のディレクトリの内容を取得するためにlsコマンドを実行するとします。そのリストをcommand.txtというファイルに保存したい場合は、以下のコマンドを実行します:

ls >> command.txt

他のLinuxコマンドにも同様のことが言えます。そのコマンドを書き、リダイレクション演算子を追加し、出力を保存したいファイル名を指定します。

標準出力と標準エラーをファイルに追加する方法

締めくくる前に、Linuxでの別のクールなファイル操作のトリックをお見せしたいと思います。標準出力と標準エラーの両方をリダイレクトしたい場合は、次のように実行してください:

command >> file.txt 2>&1 

「コマンド」フィールドの代わりに、キャプチャしたい出力の特定のコマンドを入力する必要があります。1 と 2 はそれぞれ標準出力と標準エラーのファイルディスクリプタです。また、リダイレクション演算子の前後にあるものがファイル名ではなくファイルディスクリプタであることを示すために、& 記号も使用します。

より良いLinuxファイル操作体験

この新たに得た知識を持って、あなたは今や選択したファイルにテキストや文字列を簡単に追加できるようになります。あなたの状況やLinuxコマンドへの慣れに応じて、上記の方法のいずれかを選ぶことができます。

関連記事: