sed在模式后合并2行

Leo*_*o92 9 regex sed

我想在使用sed的模式之后合并两行(没有awk因为我正在使用windows)所以例如这里是输入

pattern
XXXXXX
YYYYYY
Run Code Online (Sandbox Code Playgroud)

这是输出:

 XXXXXXYYYYYY
Run Code Online (Sandbox Code Playgroud)

Tho*_*hor 18

用sed这个工作:

sed -n '/pattern/ {s/.*//; N; N; s/\n//g; p;}'
Run Code Online (Sandbox Code Playgroud)

说明

  • /pattern/匹配模式并执行大括号块{ }.
  • s/.*//从模式空间中删除模式,更短但更模糊的摆脱模式的方法是交换模式空间并使用x命令保持空间.
  • N 从输入文件中获取下一行并将其附加到模式空间.
  • s/[\r\n]//g 从模式空间中删除所有换行符和回车符.
  • p 打印图案空间.

组合3行的稍微简短的解决方案是:

sed -n '/pattern/ {x; N; N; s/\n//g; p;}'
Run Code Online (Sandbox Code Playgroud)

  • 我经常使用 sed,但是这些详细的 sed 解释仍然很有帮助,更多的人应该这样做(包括我),谢谢! (2认同)