有时候我们从网页上拷贝的资料,刚放到一个文本文件里的时候,变成这个样子,以一个竖行列出:
# cat data
1
2
3
4
5
6
7
8
我们想把它们放到一行里,简单的办法可以:
# cat data | tr '\n' ' ' 或
# cat data | xargs echo
然后再用sed 或者 tr 去掉其中的空格,最后变成
12345678
这就是我们想要的了。
这个效果也可以用sed作,与前面的方法比起来,它可以一气呵成(不用管道),GNU sed能够直接写入文件,这个语句用到了label:
# sed ':1;N;s/\n//;$!b1;s/\s*//g' data
其中,sed ':1;N;s/\n//;b1' 是同 cat data | tr '\n' ' ' 一样的效果。
而需要删除空格,则以$!作为label的限定条件,处理到最后一行的时候,b1;后面的语句得以执行。
阅读(2371) | 评论(0) | 转发(0) |