次のコマンドがありますが、何も出力されません。print $0
または、任意の列(たとえば、、print $2
)を維持すると、print $3
期待どおりに印刷されます。 「if文」を読んでいないようです。
awk -F"," '{if ($2 >= 09170000000 && $2 <= 09179999999) print $0 }' filename
サンプルファイル:
"dummy","09171234567","","dummy","dummy","dummy","dummy"
ベストアンサー1
カンマで区切られた方法でデータを読み取るように指示したため、引用符awk
はデータの一部になり、整数の比較は失敗します。
$ awk -F',' '{ print $2 }' file.txt
"09171234567"
代わりに、カンマを引用符で囲むことができます。
$ awk -F'"?,"?' '{ print $2 }' file.txt
09171234567
この表現は、"?,"?
「カンマ、前、および/または後のオプションの二重引用符」を意味します。
最終awk
コード:
$ awk -F'"?,"?' '$2 >= 09170000000 && $2 <= 09179999999' file.txt
"dummy","09171234567","","dummy","dummy","dummy","dummy"
どのブロックの条件も真と評価されない場合、{...}
現在の入力ラインが出力されます。