【发布时间】:2021-12-22 22:50:25
【问题描述】:
我有一个这样的文件:
"1","ab,c","def"
所以只使用逗号作为字段分隔符会得到错误的结果,所以我想使用“,”作为字段分隔符,我试过这样:
awk -F "," '{print $0}' file
或者像这样:
awk -F "","" '{print $0}' file
或者像这样:
awk -F '","' '{print $0}' file
但结果不正确,不知道如何将“”作为字段分隔符本身的一部分,
【问题讨论】:
-
-F '","'似乎可以工作(就像在文字","中拆分一样,不会神奇地成为“引用感知解析器”)。但是,如果您只使用print $0,您将如何测试它?! -
你不想使用
"作为字段分隔符的一部分,你希望你的程序“lex”(如:分成单独的“tokens”)尊重引号,那就是另一个问题! -
'","' 不起作用,我帖子中的 $0 是错字,
-
echo '"1","ab,c","def"' | awk -F '","' '{print $1}'为我工作并正确打印"1。如果您想解析带引号的 CSV 文件,考虑不重新发明轮子并使用一些现有的解析器或库?我的 5 分钟谷歌搜索 stackoverflow.com/questions/3138363/… coderwall.com/p/mplocg/simple-quote-comma-csv-parsing-in-awk github.com/geoffroy-aubry/awk-csv-parser 。但是真的用csvtool