【发布时间】:2019-08-11 00:00:00
【问题描述】:
输入文件:
"1","2col",""3col " "
"2","2col"," "3c,ol " "
"3","2col"," 3co,l"
"4","2col","3co,l"
"5","2col",""3co,l "" "
"6","2col",""3c,ol ""3c,ol"""
输出文件:
"1","2col","3col "
"2","2col"," 3c,ol "
"3","2col"," 3co,l"
"4","2col","3co,l"
"5","2col","3co,l "
"6","2col","3c,ol 3c,ol"
请帮助我使用 Unix 命令获得上述输出。请注意输出中的第 3 列已修改,所有内部双引号均已删除。
逗号是结束符。当双引号之间存在逗号时,它不被视为终止符。请参见第 6 行,在第 2 个逗号之后,逗号作为文本出现在双引号之间,这很好。
到目前为止我所做的尝试:
sed 's/""|/|/g'
sed -e "s/\"\"//g"
perl -pe 's/(?<!^)(?<!\,)"(?!\,)(?!$)/""/g'
【问题讨论】:
-
嗨艾伦,sed 's/""|/|/g' 和 sed -e "s/\"\"//g" 和 perl -pe 's/(?
-
perl的Text::CSV模块可能会成功。 -
为什么在输入的第一行测试示例中你有 2 个尾随空格:
"1","2col",""3col[ ]"[ ]",而在输出中你有 4(四个)尾随空格:"1","2col","3col[ ][ ][ ][ ]"?请调整示例,使其准确符合您的要求 -
双引号在记录 5 中不平衡...你能澄清一下吗
-
@Allan 几天前我已经对以下答案投了赞成票。