LinuxやUNIXで、Excelのフィルタ機能のように特定の列で〇〇以上、〇〇以下といった指定方法で行を抽出する場合は、awkを使うとカンタンだ。
awkで特定列の値が〇〇以上の行を指定する場合は、以下のように指定する。
awk '列 >= 条件' 対象ファイル
複数条件を指定する場合は、以下のように「&&」で繋げる。
例えば、特定列の値が〇〇以上、〇〇以下といった指定をする場合は、以下のようにする。
awk '列 >= 条件 &amp;amp;&amp;amp; 列 <= 条件' 対象ファイル
[root@test-centos7 ~]# cat /work/test5_7.txt 1 aaaaa 10 2 bbbbb 4 3 ccccc 7 4 ddddd 3 5 eeeee 9 6 fffff 6 7 ggggg 8 8 hhhhh 2 9 iiiii 1 10 jjjjj 5 [root@test-centos7 ~]# awk '$1 >=3' /work/test5_7.txt 3 ccccc 7 4 ddddd 3 5 eeeee 9 6 fffff 6 7 ggggg 8 8 hhhhh 2 9 iiiii 1 10 jjjjj 5 [root@test-centos7 ~]# awk '$1 >=3 && $1 <=7' /work/test5_7.txt 3 ccccc 7 4 ddddd 3 5 eeeee 9 6 fffff 6 7 ggggg 8
もちろん、特定列の値を指定することも出来る。
awk '列 == 条件' 対象ファイル
[root@test-centos7 ~]# cat /work/test5_7.txt 1 aaaaa 10 2 bbbbb 4 3 ccccc 7 4 ddddd 3 5 eeeee 9 6 fffff 6 7 ggggg 8 8 hhhhh 2 9 iiiii 1 10 jjjjj 5 [root@test-centos7 ~]# awk '$2=="ccccc"' /work/test5_7.txt 3 ccccc 7
このように、Linux/UNIXのコマンドライン上でExcelのフィルタのような抽出をするなら、awkを使えばカンタンに行う事が出来る。
