我想根据第三列值处理一个 csv 文件并将匹配的行保存到一个单独的文件中。
#!/bin/bash
awk -F, '$3 ~ /0/ {print}' ./inputfile.csv > ./out/output.csv
我想要的只是第 0 列中的 0 值,但使用上述命令,输出文件包含第 3 列值 0 、 10 、 20 、 100 等。(其中包含 0 的任何值)。
如何告诉 awk 忽略通配符匹配并仅在第 3 列中使用绝对 0 值?
你可以这样做:
awk -F, '$3 == "0"' ./inputfile.csv > ./out/output.csv
Run Code Online (Sandbox Code Playgroud)
~
是模式匹配,在这里你不想要。==
匹配文字字符串“0”,没有别的。我还删除了该print
语句,因为如果您不提供代码块,则暗示了它。
您也可以考虑使用真正的 CSV 解析库,因为语法可能比逗号更复杂(例如,处理引用和转义)。