次の値を持つ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