【发布时间】:2014-10-16 22:07:50
【问题描述】:
我正在尝试使用 sed 删除两个搜索模式之间的所有换行符。
我首先找到了this post,它教会了我如何跨行在两个模式之间进行搜索。
sed -e '/begin/,/end/{s/begin/replacement/p;d}'
然后我找到了this post 来帮助删除文件中的所有换行符。
sed ':a;N;$!ba;s/\n/ /g'
我尝试将这两个答案结合起来并得出:
sed -e '/begin/,/end/{:a;N;$!ba;s/\n/ /p;d}'
但是,它并不完全有效。它从正确的行开始替换换行符,但一直持续到文件末尾。下面给出一个例子:
Sed 命令:
sed -e '/Seven/,/Fifteen/{:a;N;$!ba;s/\n/ /g}' input.txt
输入.txt:
One Two Three
Four Five Six
Seven Eight Nine
Ten Eleven Twelve
Thirteen Fourteen Fifteen
Sixteen Seventeen Eighteen
Nineteen Twenty Twenty-One
输出:
One Two Three
Four Five Six
Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen Twenty Twenty-One
我真正想要的:
One Two Three
Four Five Six
Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen
Sixteen Seventeen Eighteen
Nineteen Twenty Twenty-One
感谢您的帮助!
【问题讨论】: