Shell 尝试将下一行连接到sed中以反斜杠结尾的行

Shell 尝试将下一行连接到sed中以反斜杠结尾的行,shell,scripting,sed,Shell,Scripting,Sed,有两个文件file.txt和file1.txt $ cat file.txt Linux Administration Scripting Tips and Tricks Windows Administration Database Administration of Oracle Administration of Mysql Security Network Online\ Security Productivity\ Google Search\ Tips "Web Based Time

有两个文件file.txt和file1.txt

$ cat file.txt
Linux
Administration
Scripting
Tips and Tricks
Windows
Administration
Database
Administration of Oracle
Administration of Mysql
Security
Network
Online\
Security
Productivity\
Google Search\
Tips
"Web Based Time Tracking,
Web Based Todo list and
Reduce Key Stores etc"
$

$ cat file1.txt

AIX
Solaris\
Unix\ 
Linux 
HPUX
我试图将下一行附加到以反斜杠结尾的行中,并将上述文件作为输入

file.txt中的o/p如下所示,它是正确的

$ sed ':loop /\\$/N; s/\\\n */ /; tloop' file.txt
Linux
Administration
Scripting
Tips and Tricks
Windows
Administration
Database
Administration of Oracle
Administration of Mysql
Security
Network
Online Security
Productivity Google Search Tips
"Web Based Time Tracking,
Web Based Todo list and
Reduce Key Stores etc"
$
如果我再次以file1.txt作为输入运行上述行,则o/p不正确

$ sed ':loop /\\$/N; s/\\\n */ /; tloop' file1.txt
AIX
Solaris Unix\ 
Linux 
HPUX

任何人都可以解释为什么file1.txt没有显示正确的o/p。

反斜杠后面有空格。尝试:

sed ':loop /\\ *$/N; s/\\ *\n */ /; tloop' file1.txt
这可能适用于您(GNU-sed):


这需要注意换行符的两边。

谢谢您的回复。但是反斜杠后面的两个文件中都有空格。如果我运行sed':loop/\\$/N;s/\\\n*/;tloop'file.txt则o/p是正确的,但与file1不一致。txt是的,我在两个文件中都尝试了您的代码,并且两个文件都附带了正确的o/p,但我担心的是,如果我运行以前的代码sed':loop/\\$/N;s/\\\n*/;tloop'abc.txt与文件和文件1一个显示正确的o/p,另一个不显示,这两个文件中的反斜杠后面都有空格。您发布的文件内容中没有空格,在“Unix\”后面只有一个空格。如果您在这里发布的文件与您在这里发布的文件不同,我们无法找出问题所在。在file.txt中的Google Search\之后也有额外的空间,但它给出了正确的o/p,那么为什么相同的代码不适用于Unix?在您在问题中发布的文件内容中,在“Google Search\”之后没有额外的空间。尝试在“谷歌搜索”之后手动添加一个,看看你的脚本是否仍然有效。
sed ':a;$!N;s/\\\s*\n\s*/ /;ta;P;D' file