求助sed如何匹配最后一个字符并替换字符后的换行符呢

例如有文本文件内容为:aaa111|bbb222|ccc333|ddd444|eee555|我想要替换最后字符不是以“|”结尾的行,与下一行连接到一起,得到:aaa111... 例如有文本文件内容为:
aaa111|
bbb222|
ccc
333|
ddd444|
eee55
5|

我想要替换最后字符不是以“|”结尾的行,与下一行连接到一起,得到:
aaa111|
bbb222|
ccc333|
ddd444|
eee555|

请问这个sed命令应该怎么写呢》
展开
 我来答
albumin
2019-04-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2328万
展开全部
echo "aaa111|
bbb222|
ccc
333|
ddd444|
eee55
5"|sed -n '{/|$/{ p;b};${p;b};N;s/\n//;p}'

当行以|结尾或是最后一行时直接打印,否则读取下一行,替换换行符输出

追问
谢谢,很有帮助,文本是在一个文件里面,我通过命令:
cat test_file | sed -n '{/|$/{ p;b};${p;b};N;s/\n//;p}'
可以输出想要的,但是我是想直接把文件改掉,目前使用了重定向:
sed -n '{/|$/{ p;b};${p;b};N;s/\n//;p}' test_file >> test_file
请问如何直接改文件呢,我把-n改成-i改的内容不对~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式