当前文件:
COl1,COl2,COl3,COl4,COL5
AAA1,AAA1,AAA1,AAA1,AAA1
BBB10,BB11
,BB22,BB33
BB44
CCCC,CCC1,CCC2,CCC3
,CCC4,CCC5
预期:
COl1,COl2,COl3,COl4,COL5
AAA1,AAA1,AAA1,AAA1,AAA1
BBB10,BB11,BB22,BB33,BB44
CCCC,CCC1,CCC2,CCC3
寻找东西
最好使用 sed。 源在字符串之间有不需要的换行符,并且字符串边界没有双引号。
尝试了以下方法,但没有成功:
sed -z -i 's/\n,*/.../g' filename
这可能对你有用(GNU sed):
sed -E ':a;N;s/\n,/,/;ta;s/\n([^,]+)$/,\1/;ta;P;D' file
打开扩展正则表达式
-E
。
创建循环占位符
:a
追加下一行
N
(换行符将添加到下一行之前)。
用逗号替换换行符和逗号。
如果最后一次替换成功,则跳回循环占位符。
如果上次替换不成功,请将后跟非逗号字符串的换行符替换为逗号后跟该字符串。
如果最后一次替换成功,则跳回循环占位符。
在所有情况下,打印模式空间中的第一行,然后删除模式空间中的第一行。
注意在
D
命令之后,如果模式空间不为空,则不会将下一行隐式放置在模式空间中,并且 sed 循环再次开始。