首先,提前感谢您的帮助。
我需要用unix文件中的空格替换新行(\ n),如果它们前面没有';'。
例如,如果你有一个unix文件,如:
TestFields;TestFields2
;TestFields3;TestFields4
输出应为:
TestFields;TestFields2 ;TestFields3;TestFields4
所以我正在使用这样的sed命令:
sed ':a;N;$!ba;s/[^;]\n/ /g'
问题是这个命令还会替换之前的字符\ n所以我的outpu就像:
TestFields;TestFields ;TestFields3;TestFields4
我放松了'TestFields2'中的'2'.. 有人知道如何保留我的角色但更换\ n?
答案 0 :(得分:0)
捕获匹配的char并用于替换
$ sed -r ':a;N;$!ba;s/([^;])\n/\1 /g' file
TestFields;TestFields2 ;TestFields3;TestFields4
g后缀可能不需要。
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed ':a;N;/;\n/!s/\n/ /;ta;P;D' file
另一种方法是将整个文件篡改到内存中并在读取问题时读取,即如果换行符之前的字符是;
则不执行任何操作,否则用空格替换换行符。