awkコマンドとは?Linuxでテキストを加工・抽出する基本を完全ガイド
生徒
「Linuxで文字がたくさん並んだデータを見ると、必要なところだけ取り出したくなるんですが、どうすればいいですか?」
先生
「そんなときに活躍するのが awk コマンドです。文章や数字の列から、必要な部分だけを取り出せます。」
生徒
「黒い画面で操作するって聞くと、難しそうで不安です……。」
先生
「大丈夫です。最初は“表を切り取る道具”くらいの感覚で覚えれば十分ですよ。」
1. awkコマンドとは?
awkコマンドは、Linuxでテキストファイルを加工・抽出するための基本コマンドです。ログファイル、CSV形式のデータ、スペース区切りの一覧表など、「文字が横に並んだデータ」を扱うのが得意です。
難しく聞こえますが、イメージとしては表計算ソフトで列だけを切り取る作業に近いです。マウスの代わりに文字で命令するだけ、と考えると理解しやすくなります。
2. テキスト処理が必要になる理由
Linuxでは設定情報や動作の記録がテキストデータとして保存されます。これらは人が読める文字ですが、そのままでは量が多く、目的の情報を探すのが大変です。
awkを使うと、「この列だけ見たい」「条件に合う行だけ表示したい」といった作業を一瞬で行えます。これは手作業で紙の資料を探すのと、検索機能を使う違いのようなものです。
3. awkの基本構文をやさしく理解する
awkの基本形はとてもシンプルです。「どの列を表示するか」を指定します。列とは、空白で区切られた文字のまとまりのことです。
ls -l
total 8
-rw-r--r-- 1 user user 120 Jan 10 sample.txt
drwxr-xr-x 2 user user 4096 Jan 12 data
この表示では、左から1列目、2列目……と並んでいます。awkでは、$1 が1列目、$2 が2列目を意味します。
4. 列を指定して表示してみよう
まずは一番よく使う例です。ファイル一覧からファイル名だけを表示します。
ls -l | awk '{print $9}'
sample.txt
data
縦棒の記号は「前の結果を次に渡す」という意味です。難しく考えず、「一覧表をawkに渡している」と思ってください。
5. 条件をつけて行を絞り込む
awkは条件指定もできます。たとえば「サイズが100より大きい行だけ表示する」といった操作です。
ls -l | awk '$5 > 100 {print $9}'
sample.txt
ここでは5列目がファイルサイズです。「数が100より大きいものだけ」という条件を付けています。
6. CSVデータを扱うときの考え方
CSVはカンマで区切られたテキストです。awkでは区切り文字を指定できます。これは「区切り線の種類を教える」イメージです。
cat data.csv | awk -F, '{print $1,$3}'
apple 100
orange 200
-Fは「区切り文字」を意味します。ここではカンマを指定しています。
7. awkとgrepの違い
grepは「文字を探す」のが得意で、awkは「列を扱う」のが得意です。文章の中から単語を探すならgrep、表の中から列を抜き出すならawk、という使い分けがおすすめです。
初心者のうちは「awkは表専用」と覚えておくだけでも十分役立ちます。
8. よくある失敗と注意点
最初に多い失敗は、「列番号がずれる」ことです。空白の数や区切り文字を意識しないと、思った列が取れません。
結果がおかしいときは、まず元のデータをよく観察することが大切です。紙に印を付けて列を数える感覚で確認してみてください。