CATEGORY: COMMANDS

awk

AからBまで行を取得

awk '/A/,/B/' sample.txt
  • 開始行:上から最初に合致したもの
  • 終了行:開始行から、最初に合致したもの

ファイル一行目から特定の行まで出力

文字列で指定する場合

awk '{if ($0 == "B") exit;print $0;}' sample.txt

正規表現で指定する場合

awk '{if ($0 ~ /B/) exit;print $0;}' sample.txt

終了行に到達した行(B)は出力されない。

列の条件指定

2番目のフィールドが “keyword1” または “keyword2” であり、かつ3番目のフィールドが “target” である行を sample.txt ファイルから抽出し、それを出力

$2 / $3 はそれぞれ 2番目 / 3番目のフィールドを指す。

awk '($2 == "keyword1" || $2 == "keyword2") && $3 == "target" {print}' sample.txt

テキストの初回出現

重複行を除き、各行の初回出現のみを出力する方法

$ cat text 
apple
apple
banana
apple
orange
banana
$ 
$ cat text | awk '!a[$1]++'
apple
banana
orange
$