我有一个 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
我如何在这个 awk 命令中使用多个条件来检查多个列值,如上面示例条件 2 中提到的,其中我需要检查 col6 中某些特定文本的存在,同时我需要忽略第 5 列中的一些关键字。除了 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