他の列値に基づいてCSVファイルから行を選択する方法は?

他の列値に基づいてCSVファイルから行を選択する方法は?

次の値を持つCSVファイルがあります。

col1,col2,col3,col4,col5,col6,col7
1,0,0,0,0,BTS,Active
4,5,3,1,1,LocalMode,Offlne
1,2,5,6,3,PermFault,Offline
1,2,6,6,2,BSC,Active
7,8,2,3,2,NE,Offline
1,7,6,5,2,BSC,Active

次の条件を満たすように、このCSVファイルから値行を取得したいと思います。

1)(col7 = "Active")の場合、すべての行のcol1値の合計

2) if (col6 == somevalue && column5 != somevalues) これは、すべての行の col1 値の合計です。

次の awk コマンドを使用して、最初の条件を満たす値の列に基づいて CSV ファイルから行をインポートできます。

awk -F, '$7 == "Active" { print }' test.csv

上記の条件2の例で説明したように、このawkコマンドで複数の条件を使用してcol6に特定のテキストがあることを確認し、いくつかのキーワードを無視する必要がある複数の列値を確認するにはどうすればよいですか? awkに加えて、より良い簡単な方法はありますか?

ベストアンサー1

~からAWKプログラミング言語:

最も単純なawkプログラムは、一連のパターン操作ステートメントです
pattern { action }
pattern { action }

したがって、次のことを試すことができます。

awk -F, '
         $7 == "Active" { x += $1; };
         $6 == "value6" && $5 != value5 { y += $1; };
         END { print x, y; }
        ' file

おすすめ記事