Chinaunix

标题: 怎样用awk来处理这个文件 [打印本页]

作者: livelin    时间: 2008-06-05 15:31
标题: 怎样用awk来处理这个文件
文件内容:
74683 1001
74683 1002
74683 1011
74684 1000
74684 1001
74684 1002
74685 1001
74685 1011
74686 1000
....
100085 1000
100085 1001


文件就两列,希望处理成
74683 1001 1002 1011
74684 1000 1001 1002
...
就是只要第一列数字相同, 就把他们的第二列放一行上,中间空格分开
作者: 很平凡的Man    时间: 2008-06-05 15:44
刚学awk,不会,帮你顶一下
作者: blackold    时间: 2008-06-05 15:48
标题: 回复 #1 livelin 的帖子
参考类似问题

[ 本帖最后由 blackold 于 2008-6-5 15:49 编辑 ]
作者: lemboyz    时间: 2008-06-05 15:58
cat yourfile | awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a}'
作者: demil    时间: 2008-06-05 16:15
try
awk '{if($1==a) {b[$1]=b[$1]" "$2;}else{a=$1;b[$1]=a" "$2;}}END{for(i in b) print b;}' text
作者: livelin    时间: 2008-06-05 16:18
谢谢楼上各位

试了一下 用数组的
都提示awk: (FILENAME=abc FNR=103332) fatal: attempt to use array `b' in a scalar context
作者: blackold    时间: 2008-06-05 16:24
标题: 回复 #5 demil 的帖子
应该是
  1. print b[i]
复制代码
吧。

Sorry.
呵呵,我发现问题所在了,不是demil 的问题,demil 的命令是对的。提交后b[ i ]变成了b. 看不到[ i ]了。请注意b后面的;}变成斜体了。

[ 本帖最后由 blackold 于 2008-6-5 16:29 编辑 ]
作者: livelin    时间: 2008-06-05 16:32
太帅了  ok了  谢谢blackold  demil  和lemboyz
作者: Shell_HAT    时间: 2008-06-05 18:49
标题: 回复 #4 lemboyz 的帖子
贴代码的时候试试加个code标签,否则论坛可能会过滤掉一些字符。
  1. cat yourfile | awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}'
复制代码

作者: rdcwayx    时间: 2008-06-06 10:13
bucuo




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2