今天碰到一个问题:1
2
3
4
5
6
7
8
显示成:
1,2,3,4,5,6,7,8
思路:将换行符改成“,”
最快想到的就是sed
- #seq 10 | sed '{:a;N;s/\n/,/g;b a}'
-
1,2,3,4,5,6,7,8,9,10
用awk的话思路:用FS 指定字段风隔符为\n,OFS 为,输出后岂不是要得到的结果。但是实际上实现起来还有注意几点(请教过大哥后才明白)。
- 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:
- [root@Server1 shelllearn]#seq -s, 10
-
1,2,3,4,5,6,7,8,9,10
- 方法2:
- [root@Server1 shelllearn]#seq 10 | paste -sd, -
-
1,2,3,4,5,6,7,8,9,10
阅读(2190) | 评论(2) | 转发(0) |