如何在unix文件中删除双引号(“)以及”和“之间的新行

a8jjtwal  于 2022-11-04  发布在  Unix
关注(0)|答案(1)|浏览(187)

我得到了一个逗号分隔的文件与双引号字符串和日期字段。我们得到了“和新的换行符在字符串列如下。

"1234","asdf","with"doublequotes","new line
feed","withmultiple""doublequotes"

希望输出类似

"1234","asdf","withdoublequotes","new linefeed","withmultipledoublequotes"

我试过了

sed 's/\([^",]\)"\([^",]\)/\1\2/g;s/\([^",]\)""/\1"/g;s/""\([^",]\)/"\1/g' < infile > outfile

它删除字符串中的双引号并删除最后一个双引号,如下所示

"1234","asdf","withdoublequotes","new line
feed","withmultiple"doublequotes

是否有办法删除“和新换行符在中间“,和”,

wfypjpf4

wfypjpf41#

您对两个连续引号的替换不起作用,因为它们被放置在对唯一引号的替换之后,此时两个引号中只剩下一个。
我们可以通过重复替换来 * 移除“*(否则替换插入的引号将保留),如果当前输入行的末尾没有引号,则通过加入下一个输入行来 * 换行 *:

sed ':1;/[^"]$/{;N;s/\n//;b1;};:0;s/\([^,]\)"\([^,]\)/\1\2/g;t0' <infile >outfile

相关问题