Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【Bash入門】awk・sed・headを使ってファイルから特定の行を抽出・表示する方法

この記事では、text.txtというファイルから特定の行だけを抜き出して表示する方法を解説します。

Bashスクリプトで特定の行を取得するには、主にawksedhead(tailと組み合わせ)の3つの方法があります。それぞれのコマンドには特徴があり、状況に応じて使い分けることで効率的にテキスト処理が行えます。

基本構文

まず、各コマンドの基本的な書式を確認しておきましょう。LINE_NUMBERには表示したい行番号、filenameには対象のファイル名を指定します。

$> awk '{if(NR==LINE_NUMBER) print $0}' filename
$> sed -n LINE_NUMBERp filename
$> head -n LineNumber filename | tail -n + LINE_NUMBER

実際のコード例

ここでは、text.txtファイルから「5行目」を表示する場合を例に、各コマンドの具体的な使い方を見ていきます。

1. awkを使う方法

awkでは組み込み変数NR(現在処理中のレコード=行番号)を条件判定に使います。NRが5と一致した行のみを出力します。

$> awk '{if(NR==5) print $0}' text.txt

2. sedを使う方法

sedはオプション-nでデフォルトの出力を抑制し、「5p」で5行目だけを印刷(print)します。最もシンプルで高速な方法として広く使われています。

$> sed -n 5p text.txt

3. headとtailを組み合わせる方法

headで先頭から5行分を取り出し、それをtailにパイプで渡すことで、先頭の4行を切り捨てて5行目だけを残します。

$> head -n 5 filename | tail -n + 5

まとめ

どの方法でも同じ結果が得られますが、一般的には以下のように使い分けるとよいでしょう。

  • sed:単一の行を手軽に取り出したい場合に最適
  • awk:行番号の条件分岐や複雑なテキスト処理を同時に行いたい場合に便利
  • head + tail:他のコマンドとのパイプライン処理に組み込みやすい

用途に合わせてこれらのコマンドを使いこなせば、Bashでのテキストファイル操作が格段に効率化されます。

  1. TkinterのメニューUIから破線(点線)を削除する方法

    TkinterのMenuウィジェットは、アプリケーションのナビゲーションバーにメニューバーを作成するために使用されます。通常、メニューバーはアプリケーションウィンドウの上部、タイトルバーの下に配置されます。メニューをクリックして展開したとき、最初のメニュー項目の上部に破線(点線)が表示されることがあります。これは「ティアオフ(tear-off)」と呼ばれる機能で、ユーザーがメニューをドラッグして独立したウィンドウとして切り離せるようにするためのものです。tearoff属性とはMenuウィジェットにはtearoff(真偽値)という属性があります。デフォルトでは tearoff=1 が設定されてお

  2. Linuxコマンドラインでテキストファイルの内容を表示する方法|cat・more・lessの使い方徹底解説

    Linuxを使い始めたばかりの方から最もよく寄せられる質問のひとつが、「どのコマンドを使えばファイルの中身を確認できるのか」というものです。伝統的なUnix環境に関することの多くと同じように、やり方はひとつではありません。しかも、ここで紹介するテクニックの大半は、OS XやFreeBSDを使っている方にもそのまま応用できます。つまり、コマンドラインからファイルを表示する基本さえ身につければ、ほぼどんなUnix系のプロンプトに出会っても迷わず操作できるようになるということです。方法1:通常のテキストファイルを表示するテキストファイルを表示する最も簡単な方法は、catに続けてファイル名を入力するこ