我想在使用sed的模式后合并两行(没有awk因为我使用的是windows) 所以例如这里是输入
pattern
XXXXXX
YYYYYY
这是输出:
XXXXXXYYYYYY
答案 0 :(得分:18)
用sed工作:
sed -n '/pattern/ {s/.*//; N; N; s/\n//g; p;}'
/pattern/
匹配模式并执行大括号{ }
。s/.*//
从模式空间中删除模式,删除模式的更简短但更模糊的方法是交换模式空间并使用{保持空间{1}}命令。x
从输入文件中获取下一行并将其附加到模式空间。N
从模式空间中删除所有换行符和回车符。s/[\r\n]//g
打印图案空间。组合3行的稍微简短的解决方案是:
p
答案 1 :(得分:1)
在Windows上验证:
sed -r '1h; 1!H; ${ g; s/pattern[\r\n]+(.*)[\r\n]+(.*)/\1\2/ p}' infile
进行了更正