Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376170
  • 博文数量: 61
  • 博客积分: 2451
  • 博客等级: 上尉
  • 技术积分: 650
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-06 21:24
文章分类

全部博文(61)

文章存档

2012年(1)

2011年(44)

2010年(16)

分类: LINUX

2011-05-25 21:38:52

今天碰到一个问题:
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

阅读(2190) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

zzy71862011-05-28 08:00:17

yinyuemi: 兄弟用paste:
paste -sd',' -.....
谢了 学习了

yinyuemi2011-05-27 05:48:42

兄弟用paste:
paste -sd',' -