sed:多行的条件合并

use*_*523 4 merge sed lines

我需要根据模式使用sed合并文件的行.例如:

输入文件:

X1 A B C D E F

\+ G H I J 1 

\+ LK T PP E OO 2

X2 DDF F Y 

\+ J W Q 
Run Code Online (Sandbox Code Playgroud)

....

OutPut预计:

X1 A B C D E F G H I J 1 LK T PP E OO 2

X2 DDF F Y J W Q 

..
Run Code Online (Sandbox Code Playgroud)

我想在vi编辑器中等效于wat(:%s/\n +// g)

在网上搜索我发现了一个逻辑上应该有效的解决方案

sed -e'{:a; N; s/\n +// g; ta}'infile

但是这个命令违背了我的理解和逻辑,并产生了输出

X1 A B C D E F

\+ G H I J 1 LK T PP E OO 2
X2 DDF F Y 

\+ J W Q 
Run Code Online (Sandbox Code Playgroud)

....

欢迎提出任何想法,并提前致谢

Srisurya

pot*_*ong 18

这可能对你有用:

sed ':a;$!N;s/\n+//;ta;P;D' file
Run Code Online (Sandbox Code Playgroud)

说明:

  • :a 是一个循环占位符
  • $!N 表示如果不是文件结尾追加到当前行的下一行.
  • s/\n+// 表示删除在线结束后加号
  • ta表示最后一次替换是否支持分支到a循环占位符
  • P 打印到第一个换行符.
  • D 删除最多并包括第一个换行符.