# Director, Movie Title, Year, Comment
Ethan Coen, No Country for Old Men, 2007, none
Ethan Coen, "O Brother, Where Art Thou?", 2000, none
就像这里一样,引号外的逗号必须替换为 |
。
伊桑·科恩| “哦,兄弟,你在哪里?”| 2000|无
我确实尝试过这个命令
sed -e 's/,(?=(?:[^"]*"[^"]*")*[^"]*$)/|/g',
首先匹配这些字符串,把我得到 RE 错误:重复操作符操作数无效
我不知道如何将全新的 re 转换为 shell 和正则表达式,我将不胜感激
最佳答案
您可以尝试使用此 gnu awk
命令和 FPAT
来使用自定义正则表达式拆分字段:
awk -v OFS='|' -v FPAT=' *"[^"]*"|[^",]+' '{$1=$1} 1' file
# Director| Movie Title| Year| Comment
Ethan Coen| No Country for Old Men| 2007| none
Ethan Coen| "O Brother, Where Art Thou?"| 2000| none
关于awk - 有没有办法用 sed 替换所有逗号,除了引号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65550396/