列の1つが特定の値と一致するawkから行を印刷する方法は?

列の1つが特定の値と一致するawkから行を印刷する方法は?

したがって、数百万行のカンマ区切り値を含む大きなファイルがあります。

132.3,-23.3,1659614391.4174244,539.0,0,l_top
132.3,-23.1,1659614391.4174244,548.0,0,l_top
131.9,-22.900000000000002,1659614391.4174244,539.0,0,l_top
132.1,-22.700000000000003,1659614391.4174244,541.0,0,l_top
132.20000000000002,-22.5,1659614391.4174244,548.0,0,l_top
131.8,-22.200000000000003,1659614391.4174244,543.0,0,l_top
133.5,-22.3,1659614391.4174244,551.0,0,l_top
133.0,-22.1,1659614391.4174244,547.0,0,l_top
133.5,-21.900000000000002,1659614391.4174244,545.0,0,l_top
133.5,-21.700000000000003,1659614391.4174244,558.0,0,l_top

l_topawkを使用して、以下のように最後の列値を持つ行を抽出しようとしています。

awk -F ',' '{ if ($6 == "l_top") { print } else { exit }}' <file>

何も印刷されません。たとえば、他の列をフィルタリングすると$5 == 0正常に動作します。たぶん行末に問題があるのでしょうか?列の値に基づいてフィルタリングする正しい方法は何ですか?

ベストアンサー1

これは「プログラム終了」を意味するため、プログラムはexit最初の行から始まらないでしょうl_topnext

awk -F ',' '{ if ($6 == "l_top") { print } else { next }}' <file>

ただし、何かがtrueの場合、awkのデフォルトのジョブはその行を印刷するため、明示的に指定する必要さえありませんprint

awk -F, '$6 == "l_top"' file

それ以外の場合:

grep ',l_top$' file

おすすめ記事