1

首先,提前感谢您的帮助。

当 unix 文件中的新行 (\n) 没有以';'开头时,我需要用空格替换它们。

例如,如果您在 unix 文件中有类似的内容:

TestFields;TestFields2
;TestFields3;TestFields4

输出应该是:

TestFields;TestFields2 ;TestFields3;TestFields4

所以我正在使用这样的 sed 命令:

sed ':a;N;$!ba;s/[^;]\n/ /g'

问题是这个命令也将替换 \n 之前的字符,所以我的输出就像:

TestFields;TestFields ;TestFields3;TestFields4

我在 'TestFields2' 中丢失了 '2' .. 有人知道如何保留我的角色但替换 \n 吗?

4

2 回答 2

0

捕获匹配的字符并用于替换

$ sed -r ':a;N;$!ba;s/([^;])\n/\1 /g' file
TestFields;TestFields2 ;TestFields3;TestFields4

g 后缀可能不需要。

于 2016-04-07T12:29:00.377 回答
0

这可能对您有用(GNU sed):

sed ':a;N;/;\n/!s/\n/ /;ta;P;D' file

将整个文件放入内存并在读取问题时读取的替代方法,即如果换行符之前的字符是;不做任何事情,否则将换行符替换为空格。

于 2016-04-07T18:13:22.013 回答