我有一个这样的文本文件(每行开头留下很多空格):
2016/03/01
6,015,511 +0.55 3,718
2016/03/02
4,584,160 -0.50 2,885
2016/03/03
5,509,856 0.00 718
目标是删除日期字符串之后的换行符,例如
2016/03/01 6,015,511 +0.55 3,718
2016/03/02 4,584,160 -0.50 2,885
2016/03/03 5,509,856 0.00 718
使用
sed ':a;N;$!ba;s:\([[:digit:]]\S*\)\n:\1 :g'
导致所有行合并为一行。
在正则表达式中添加斜杠以删除日期字符串中的换行符
sed ':a;N;$!ba;s:\/\([[:digit:]]\S*\)\n:\1 :g'
结果是(日期字符串中的第一个斜杠消失了):
201603/01 6,015,511 +0.55 3,718
201603/02 4,584,160 -0.50 2,885
201603/03 5,509,856 0.00 718
任何人都可以提示吗?
答案 0 :(得分:2)
我想你想要的就是:
$ sed 'N;s/\n//' infile
2016/03/01 6,015,511 +0.55 3,718
2016/03/02 4,584,160 -0.50 2,885
2016/03/03 5,509,856 0.00 718
这会将下一行添加到模式空间,然后删除换行符。
答案 1 :(得分:0)
尝试以下脚本:
sed 's/^\s*//;N;s/\n\s*/ /' data.txt
2016/03/01 6,015,511 +0.55 3,718
2016/03/02 4,584,160 -0.50 2,885
2016/03/03 5,509,856 0.00 718
它从第一行删除所有前导空格,并在第一行和第二行之间插入合理的空格。