高木のブログ

数値比較の絞り込みをするならgrepよりawkを使った方が良い

2022/02/01

grepで数値比較(いいかた合ってるかわからないけど、〇〇以上とか〇〇以下)で絞り込みをしたかったので調べたら、どうやらawkでやった方が簡単だった

ランダムな数値が改行区切りで入ったファイルがある
ここから20以上の数値だけに絞り込みたい

$ cat random_number.txt
81
10
43
11
2
42
37
62
31
11
86
9
44
10
87
17
72
78
6
21

grepで絞り込み

grepだと文字列として正規表現で絞り込みをしないといけない
最大値がわからないとすると、20未満を除外する正規表現を書いたほうが良さそう
今回の例だと難しくはなかったけど、可読性が悪すぎる

$ grep -v '^1*[0-9]$' random_number.txt
81
43
42
37
62
31
86
44
87
72
78
21

awkで絞り込み

awkなら数値の比較ができるので、あら簡単

$ awk '{ if ($0 >= 20) print $0 }' random_number.txt
81
43
42
37
62
31
86
44
87
72
78
21

おわり

絞り込み = grep じゃなかったんだなあ


ytkg

Written by ytkg, Twitter, GitHub