awk - 如何忽略通配符匹配?

awk - 如何忽略通配符匹配?

我想根据第三列值处理 csv 文件并将匹配的行保存到单独的文件中。

#!/bin/bash awk -F, '$3 ~ /0/ {print}' ./inputfile.csv > ./out/output.csv

我想要的只是第三列中的 0 个值,但是使用上面的命令,输出文件包含第三列值 0 、 10 、 20 、 100 等。(其中包含 0 的任何值)。

如何告诉 awk 忽略通配符匹配并仅在第三列中使用绝对 0 值?

答案1

你可以这样做:

awk -F, '$3 == "0"' ./inputfile.csv > ./out/output.csv

~是模式匹配,您在这里不需要它。==匹配文字字符串“0”,仅匹配其他内容。我还删除了该print语句,因为如果您不给出代码块,则暗示它。

您还可以考虑使用真正的 CSV 解析库,因为语法可能比逗号更复杂(例如,处理引用和转义)。

相关内容