したがって、数百万行のカンマ区切り値を含む大きなファイルがあります。
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_top
awkを使用して、以下のように最後の列値を持つ行を抽出しようとしています。
awk -F ',' '{ if ($6 == "l_top") { print } else { exit }}' <file>
何も印刷されません。たとえば、他の列をフィルタリングすると$5 == 0
正常に動作します。たぶん行末に問題があるのでしょうか?列の値に基づいてフィルタリングする正しい方法は何ですか?
ベストアンサー1
これは「プログラム終了」を意味するため、プログラムはexit
最初の行から始まらないでしょうl_top
。next
awk -F ',' '{ if ($6 == "l_top") { print } else { next }}' <file>
ただし、何かがtrueの場合、awkのデフォルトのジョブはその行を印刷するため、明示的に指定する必要さえありませんprint
。
awk -F, '$6 == "l_top"' file
それ以外の場合:
grep ',l_top$' file