Unix shell脚本,用于删除前面有特定字符的新行



首先,感谢您的帮助。

当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

另一种选择是将整个文件拖入内存,并在读取问题时读取,即如果换行符前面的字符是;,则不采取任何其他措施,用空格替换换行符。

相关内容

  • 没有找到相关文章

最新更新