我有一个 csv 文件,其中包含诸如
之类的行 1 Er6 Te100 7.02455 1 0 0 -0.00420
2 Cu7 S150 6.96222 0 -1 0 -0.00421
3 Sc8 P50 7.01955 0 0 0 -0.00397
我想使用 awk 来过滤数据并显示行
或
到目前为止,我正在从最简单的形式构建命令,并陷入
awk '{ if (($2 == "Cu*")) { print } }' file
这不会输出任何内容。 AWK 似乎不将“Cu*”识别为通配符,因此没有匹配项。
我也不确定如何传递包含两个 and 语句的 OR 语句。
非常感谢您的帮助。
您可以将所有条件组合成单一表达式:
awk '($2 ~ /^Cu/ && $3 ~ /^(S|Te)/) || ($2 ~ /^(S|Te)/ && $3 ~ /^Cu/)' file
2 Cu7 S150 6.96222 0 -1 0 -0.00421