首先,感谢您的帮助。
当unix文件中的新行(\n)前面没有";"时,我需要用空格替换它们。
例如,如果您在unix文件中有以下内容:
TestFields;TestFields2
;TestFields3;TestFields4
输出应为:
TestFields;TestFields2 ;TestFields3;TestFields4
所以我使用的sed命令是这样的:
sed ':a;N;$!ba;s/[^;]n/ /g'
问题是这个命令还会替换前面的字符,所以我的输出是:
TestFields;TestFields ;TestFields3;TestFields4
我丢失了"TestFields2"中的"2"。。有人知道如何保留我的角色,但替换\n?
捕获匹配的字符并用于替换
$ sed -r ':a;N;$!ba;s/([^;])n/1 /g' file
TestFields;TestFields2 ;TestFields3;TestFields4
g后缀可能不需要。
这可能对你有用(GNU sed):
sed ':a;N;/;n/!s/n/ /;ta;P;D' file
另一种选择是将整个文件拖入内存,并在读取问题时读取,即如果换行符前面的字符是;
,则不采取任何其他措施,用空格替换换行符。