Unix shell脚本,用于删除以特定字符开头的新行

Unix shell脚本,用于删除以特定字符开头的新行,shell,unix,sed,newline,lf,Shell,Unix,Sed,Newline,Lf,首先,提前感谢您的帮助 当unix文件中的新行(\n)前面没有“;”时,我需要用空格替换它们 例如,如果unix文件中包含以下内容: TestFields;TestFields2 ;TestFields3;TestFields4 输出应为: TestFields;TestFields2 ;TestFields3;TestFields4 所以我使用的是这样的sed命令: sed ':a;N;$!ba;s/[^;]\n/ /g' 问题是此命令还将替换前面的字符,\n因此我的输出类似于: Tes

首先,提前感谢您的帮助

当unix文件中的新行(\n)前面没有“;”时,我需要用空格替换它们

例如,如果unix文件中包含以下内容:

TestFields;TestFields2
;TestFields3;TestFields4
输出应为:

TestFields;TestFields2 ;TestFields3;TestFields4
所以我使用的是这样的sed命令:

sed ':a;N;$!ba;s/[^;]\n/ /g'
问题是此命令还将替换前面的字符,\n因此我的输出类似于:

TestFields;TestFields ;TestFields3;TestFields4
我在“测试场2”中松开了“2”。。
有人对如何保留我的角色但替换角色有想法吗\n

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

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

可能不需要g后缀。

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

$ sed -r ':a;N;$!ba;s/([^;])\n/\1 /g' file
TestFields;TestFields2 ;TestFields3;TestFields4
可能不需要g后缀。

这可能适合您(GNU-sed):

另一种方法是将整个文件读入内存,并在问题被读取时读取,即换行之前的字符是否为
不执行任何操作,否则将换行符替换为空格。

这可能适合您(GNU-sed):


另一种方法是将整个文件读入内存,并在问题被读取时读取,即换行之前的字符是否为
不执行任何操作,否则将换行符替换为空格。

sed:a;N、 美元!文学士;s/\([^;]\)\n/\1/g'
sed':a;N、 美元!文学士;s/\([^;]\)\n/\1/g'
当您可以将此便携时,无需使用ERE。谢谢!它的工作,(将把你的答案,当它将被启用)没有必要使用ERE时,你可以使这个便携式。谢谢!它正在工作,(将在启用时输入您的答案)