ウェブサイト検索

Linuxでテキスト処理のためのheadおよびtailコマンドの使い方


head と tail は、Linux でテキスト操作に最も一般的に使用されるコマンドの二つです。これらをどのようにあなたの利点に活用できるかを見てみましょう。

テキストファイルを処理するために使用される多くのLinuxコマンドやツールがあります。しかし、ファイル全体の内容を読みたいのではなく、その一部だけを読みたい場合もあります。Linuxではheadおよびtailコマンドを使用して、ファイルの先頭と末尾をそれぞれ出力できることをご存知ですか?

これらの2つのコマンドを使用して、Linux上でテキストを効果的に処理および操作する方法を読み進めて確認してください。

headコマンドとは何ですか?

headコマンドは、ファイルの最初の部分を印刷するために使用されます。それはファイルを最初から読み込みます。もし千行以上のあるファイルがある場合、それを開いて読むのは非常に面倒です。headコマンドを使用すれば、簡単に上部から数行を印刷することができます。

ヘッドコマンド構文

headコマンドの基本構文は次の通りです:

head [option] [file]

headコマンドと一緒に使用できるオプションが多数ありますが、そのいくつかについては後で説明します。headコマンドに関するコマンドラインヘルプを取得するには、次のコマンドを実行してマニュアルページを確認してください:

man head

headコマンドの使い方

この例では、ファイルnumbers.txtを作成します。ファイルには、1から20までの数字を言葉でリストします。任意のファイルを選んでも構いませんが、少なくとも11行以上の内容があることを確認してください。

デフォルトのheadコマンドを使用する

デフォルトでは、headコマンドはファイルの最初の10行のテキストを表示します。ターミナルでこのコマンドを実行して、numbers.txtファイルで試してみてください:

head numbers.txt

ファイルの最初の10行を出力します:

one
two
three
four
five
six
seven
eight
nine
ten

ファイルが10行未満の場合、headコマンドは存在するすべての行を表示します。

最初のN行を印刷する

headコマンドを使用して、デフォルトの10行ではなく特定の行数を印刷することができます。numbers.txtファイルの最初の3行を印刷するには、次のコマンドを実行します:

head -n 3 numbers.txt

結果:

one
two
three

head コマンドを使用して最後の N 行を除外する

テキストの最初の行を印刷できるように、印刷する際に最後のN行を除外することもできます。Nパラメータに負の数を使用することで、これを実現できます。

numbers.txtファイルの最後の15行を除外するには、次のコマンドを実行します:

head -n -15 numbers.txt

結果:

one
two
three
four
five

ファイルの最初のN文字を印刷する

headコマンドには、ファイル内の最初の文字またはバイトの数を印刷するオプションもあります。これは-cオプションを使用することで行えます。最初の10文字を印刷するには、次のようにします:

head -c 10 numbers.txt

出力 :

one
two
th

tailコマンドとは何ですか?

名前が示すように、tailコマンドはファイルの最後の行を表示します。ファイルの末尾から読み取り、最後の行を出力します。

tailコマンドの構文

tailコマンドの基本構文は次の通りです:

tail [option] [file]

tailコマンドの詳細については、マニュアルページを表示することで確認してください:

 man tail

tailコマンドの使い方

次の例では、すでに作成された numbers.txt ファイルを使用します。

デフォルトのtailコマンドの使用

tailコマンドは、特別なオプションを使用しない場合、ファイルの最後の10行を出力します。例えば:

tail numbers.txt

出力は、指定された通り、最後の10行を表示します:

eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty

最後のN行を印刷する

最後の10行を印刷したくない場合、特定の行数を指定することができます。その場合、-nオプションを使用します。numbers.txtファイルの最後の4行を印刷するには、次のコマンドを実行してください:

tail -n 4 numbers.txt

結果:

seventeen
eighteen
nineteen
twenty

特定の行の後に行を印刷する

特定の行 N から始めたい場合は、正の数と一緒に -n オプションを使用できます。numbers.txt ファイルの 17 行目から出力を印刷するには、次のコマンドを実行してください:

tail -n +17 numbers.txt

結果:

seventeen
eighteen
nineteen
twenty

ファイルの最後のN文字を印刷する

headコマンドと同様に、-cオプションを使用してファイルの最後のいくつかの文字を印刷できます。numbers.txtファイルの最後の10文字を印刷するには、このコマンドを実行します:

tail -c 10 numbers.txt

結果:

en
twenty

複数のファイルでheadおよびtailコマンドを使用する

複数のファイルを同時に印刷するために、headとtailも使用できます。これが複数のファイル入力でコマンドを使用するための構文です:

head [option] [file1] [file2]
tail [option] [file1] [file2]

headコマンドとtailコマンドを組み合わせて使用する

パイプ記号を使用して、同じコマンド内でheadとtailを一緒に使用することもできます。パイプ記号は、1つのコマンドの出力を別のコマンドの入力としてリダイレクトします。

例えば、6行目、7行目、8行目を取得するには、このコマンドを実行できます:

head -n 8 numbers.txt | tail -n 3

結果:

six
seven
eight

前述のワンライナーでは、headコマンドがファイルの最初の8行を表示し、次に出力がtailコマンドに渡され、リダイレクトされた出力の最後の3行が印刷されました。

先頭と末尾: 便利なテキスト操作コマンド

Linuxは、テキストファイルを効果的に操作および処理するために多くのコマンドを提供しており、headコマンドとtailコマンドはその中の二つに過ぎません。最も一般的なテキスト操作コマンドには、grep、uniq、sort、sed、awkなどがあります。それぞれが独自の機能セットを持ち、異なる目的を果たします。

ヘッドとテールを除けば、Linuxユーザーには他にもたくさんのテキストやファイル操作コマンドがあります。

関連記事: