Linux・UNIXでExcelのフィルタのように、ファイルから〇〇以上、〇〇以下で行を抽出する方法
Pocket

LinuxやUNIXで、Excelのフィルタ機能のように特定の列で〇〇以上、〇〇以下といった指定方法で行を抽出する場合は、awkを使うとカンタンだ。
awkで特定列の値が〇〇以上の行を指定する場合は、以下のように指定する。

awk '列 >= 条件' 対象ファイル

 

複数条件を指定する場合は、以下のように「&&」で繋げる。
例えば、特定列の値が〇〇以上、〇〇以下といった指定をする場合は、以下のようにする。

awk '列 >= 条件 && 列 <= 条件' 対象ファイル

20150925_000000

[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
Sponsored Links

もちろん、特定列の値を指定することも出来る。

awk '列 == 条件' 対象ファイル

20150925_000001

[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を使えばカンタンに行う事が出来る。

 

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>