特定の値で始まる複数の文字列を grep する方法

特定の値で始まる複数の文字列を grep する方法

たくさんの数字が入った 2 つの列で構成されたファイルがあり、2 番目の列が 1.008 または 1.009 または 1.01 で始まる行を検索して見つけたいのですが、1 番目と 2 番目の列の両方を印刷したいのです。

私は試した:

grep -Ev '^1.008|^1.009|^1.01'

しかし、それは機能しません。

答え1

表形式のデータで 1 つのフィールドを検索する場合、awk黄金のチケットは次のようになります。

awk '$2 ~ /^1.0(0[89]|1$)/ { print $1,$2 }' /path/to/inputfile

これにより、指定したパターン (「で始まる1.009 or 1.009か等しい1.01」) が 2 番目のフィールドに適用され、一致する場合は 1 番目と 2 番目のフィールドが出力されます。

答え2

ファイル名がexercise.txt次のようになっていると仮定します。

a   1.008  
b   1.00005  
c   1.01  
d   1.01  
e   1.009  
awk '( $2 >= 1.008 && $2 < 1.02 ) { print $1,$2 }' exercise.txt > output.txt

次に、次のようになります。

$ head output.txt  
a   1.008  
c   1.01  
d   1.01  
e   1.009  

関連情報