我想根据第三列值处理 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 解析库,因为语法可能比逗号更复杂(例如,处理引用和转义)。