awk条件付きが機能しない

awk条件付きが機能しない

次のコマンドがありますが、何も出力されません。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"

どのブロックの条件も真と評価されない場合、{...}現在の入力ラインが出力されます。

おすすめ記事