多行变成一行显示

2214阅读 2评论2011-05-25 zzy7186
分类:LINUX

今天碰到一个问题:
1
2
3
4
5
6
7
8
显示成:
1,2,3,4,5,6,7,8

思路:将换行符改成“,”
最快想到的就是sed 
  1. #seq 10 | sed '{:a;N;s/\n/,/g;b a}'
  2. 1,2,3,4,5,6,7,8,9,10
用awk的话思路:用FS 指定字段风隔符为\n,OFS 为,输出后岂不是要得到的结果。但是实际上实现起来还有注意几点(请教过大哥后才明白)。
  1. awk 'BEGIN{FS="\n";RS="";OFS=","}$1=$1' file
上面是awk的代码:
FS 和 OFS 根据设想分别设成"\n" 和 "," 但是RS 默认是\n ,如果将FS 改成\n 后 RS 不做相应的改变awk怎么区分呢。所以这里将RS 设成"" 为空。
第二个就是 如果要使OFS生效的话 必须使对字段进行过操作。$1=$1 这个就是对字段1进行了赋值操作。
加上两种方法:
  1. 方法1:
  2. [root@Server1 shelllearn]#seq -s, 10
  3. 1,2,3,4,5,6,7,8,9,10
  1. 方法2:
  2. [root@Server1 shelllearn]#seq 10 | paste -sd, -
  3. 1,2,3,4,5,6,7,8,9,10

上一篇:dig 和 nslookup
下一篇:将单词的首字母转换成大写

文章评论