Chinaunix

标题: 【急】请教:关于uniq -c和awk连用的问题。 [打印本页]

作者: liuguanyu    时间: 2008-09-23 23:04
标题: 【急】请教:关于uniq -c和awk连用的问题。
现有一个log文件,各个字段间用\t隔开,
形如:111\t2  22\t3 3 3\t(由于字段可能含有空格,于是用\t分割)
我们需要计算重复行的值,
于是用sort | uniq -c
变成形如
5 111\t2  22\t3 3 3\t

下面要对结果入数据库。其中count值也要入库。

但是分界符是\t,而uniq -c分割符是空格,哪位大侠帮忙解决这个问题,使数据按统一分隔符分割能正确入库?
非常感谢
作者: welcome008    时间: 2008-09-24 00:15
后面在做个转换不行吗?

sort | uniq -c|tr " " "\t"

看看可以不
作者: galford433    时间: 2008-09-24 00:44
直接一个awk行么?

  1. awk 'BEGIN{FS="\t";OFS="\t"}{a[$0]++}END{for(i in a)print a[i]"\t"i"\t"}' file
复制代码

[ 本帖最后由 galford433 于 2008-9-24 00:59 编辑 ]
作者: blackold    时间: 2008-09-24 09:40
标题: 回复 #1 liuguanyu 的帖子
sort urfile|uniq -c| sed 's/^ *\([0-9]\+\) /\1\t/'

变成:
5\t111\t2  22\t3 3 3\t
作者: liuguanyu    时间: 2008-09-24 16:41
标题: 回复 #2 welcome008 的帖子
谢谢,可是会吃掉后面的空格
作者: liuguanyu    时间: 2008-09-24 16:41
标题: 回复 #4 blackold 的帖子
谢谢,只是sed不认\t
作者: blackold    时间: 2008-09-24 16:44
原帖由 liuguanyu 于 2008-9-24 16:41 发表
谢谢,只是sed不认\t

版本问题。直接输入<tab>.




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