Linuxでテキスト処理のためのheadおよびtailコマンドの使い方
head と tail は、Linux でテキスト操作に最も一般的に使用されるコマンドの二つです。これらをどのようにあなたの利点に活用できるかを見てみましょう。
テキストファイルを処理するために使用される多くのLinuxコマンドやツールがあります。しかし、ファイル全体の内容を読みたいのではなく、その一部だけを読みたい場合もあります。Linuxではheadおよびtailコマンドを使用して、ファイルの先頭と末尾をそれぞれ出力できることをご存知ですか?
これらの2つのコマンドを使用して、Linux上でテキストを効果的に処理および操作する方法を読み進めて確認してください。
headコマンドとは何ですか?
headコマンドは、ファイルの最初の部分を印刷するために使用されます。それはファイルを最初から読み込みます。もし千行以上のあるファイルがある場合、それを開いて読むのは非常に面倒です。headコマンドを使用すれば、簡単に上部から数行を印刷することができます。
ヘッドコマンド構文
headコマンドの基本構文は次の通りです:
head [option] [file]
headコマンドと一緒に使用できるオプションが多数ありますが、そのいくつかについては後で説明します。headコマンドに関するコマンドラインヘルプを取得するには、次のコマンドを実行してマニュアルページを確認してください:
man headheadコマンドの使い方
この例では、ファイル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
threehead コマンドを使用して最後の 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
thtailコマンドとは何ですか?
名前が示すように、tailコマンドはファイルの最後の行を表示します。ファイルの末尾から読み取り、最後の行を出力します。
tailコマンドの構文
tailコマンドの基本構文は次の通りです:
tail [option] [file]tailコマンドの詳細については、マニュアルページを表示することで確認してください:
man tailtailコマンドの使い方
次の例では、すでに作成された 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ユーザーには他にもたくさんのテキストやファイル操作コマンドがあります。
