求助sed如何匹配最后一个字符并替换字符后的换行符呢
例如有文本文件内容为:aaa111|bbb222|ccc333|ddd444|eee555|我想要替换最后字符不是以“|”结尾的行,与下一行连接到一起,得到:aaa111...
例如有文本文件内容为:
aaa111|
bbb222|
ccc
333|
ddd444|
eee55
5|
我想要替换最后字符不是以“|”结尾的行,与下一行连接到一起,得到:
aaa111|
bbb222|
ccc333|
ddd444|
eee555|
请问这个sed命令应该怎么写呢》 展开
aaa111|
bbb222|
ccc
333|
ddd444|
eee55
5|
我想要替换最后字符不是以“|”结尾的行,与下一行连接到一起,得到:
aaa111|
bbb222|
ccc333|
ddd444|
eee555|
请问这个sed命令应该怎么写呢》 展开
1个回答
展开全部
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改的内容不对~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询