我有一个文本内容如下, 330#2.5#2.3 334#12.4#12.0 123#1.5#0.0 330#3.6#2.5 304#34.80#30.60 304#55.55#34.45 330#99.00#55.50 我想做的是如果第n行和 第m行的第1列相等的则分别将m,n行的第2和第3列相加,然后连同第1列输出.否则直接输出;不知道用什么方法,且这个文本有30多万行,我想用awk数组的方法,但是用不好,哪位大哥指点一下.
awk数组一问。 # cat test more test Tom Jones Mary Adams Sally Chang Billy Black Tom Sayage Tom Chung awk '/^Tom/{name[NR]=$1}END{for(i in name){print name}}' test 这是书上的。 感觉很啰嗦,还绕那么大的一个弯子,直接 awk '/^Tom/{name[NR]=$1;print name[NR]}' test 结果是一样的。而且容易理解。
awk -F'|' '{++a[$1]} END{for (i in a) print i,a}' aa.tmp awk: cmd. line:1: (FILENAME=aa.tmp FNR=3) fatal: attempt to use array `a' in a scalar context 怎么解决? 谢谢!!
求助,想实现如下统计功能。 有个log,内容类似如下: xxxxxxxx,resp,1001,xxxxxx,56:201,xxxx xxxxxxxx,resp,1001,xxxxxx,56:202,xxxx xxxxxxxx,resp,1001,xxxxxx,56:203,xxxx ...... ...... xxxxxxxx,resp,1002,xxxxxx,56:201,xxxx xxxxxxxx,resp,1002,xxxxxx,56:203,xxxx xxxxxxxx,resp,1002,xxxxxx,56:206,xxxx ...... ...... xxxxxxxx,resp,1007,xxxxxx,56:-13,xxxx xxxxxxxx,resp,1008,xxxxxx,56:9001,xxxx xxxxxxxx,resp,10...
xiaobingli:/usr/local/scripts # less data.txt ID Name Age City Country Tel Salary Children 1001 Steven 25 NY U.S.A +01-02-323222 $4900 2 1002 Huang-Yu 30 BJ China +86-10-168888 $6000 1 1003 Fish-Mad 27 SG SG ...
[root@test]# cat a.txt 1:2:3 4:5:6 [root@test]# cat b.txt a:b:c d:e:f [root@test]# awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2;print a[$1]}' a.txt b.txt 2 5 [root@test]# awk 'BEGIN{OFS=FS=":"} NR>FNR{a[$1]=$2;print a[$1]}' a.txt b.txt b e [root@test]# awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print}' a.txt b.txt a:5:c d:5:f 疑问:最后NR>FNR{$2=a[$1];print}将a[$1]的值赋给b.txt的$2,然...
文本内容 ./2006/20060721b/p044559_47.txt ./2006/20060728a/p044559_47.txt ./2007/20070606News/p044559_47.txt ./Olympic City/Shanghai/Cityscape/p044559_47.txt ./2006/20060721b/p053826_01.txt ./Olympic City/Shanghai/Cityscape/p053826_01.txt ./2006/20060719News/Gome/pau52839_02.txt ./2006/20060725a/pau52839_02.txt ./2006/20060726News/TyphoonKeami/pau90550_12.txt ./2006/20060728News/SMS/pau90550_12.txt...
3 75 ast 3 33 tmt 2 21 ast awk '{a[$3]+=$1;b[$3]+=$2}END{for(i in a) print a,b,i}' filename 请问a[$3] 和 a[$3]+=$1 表达式 是什么意思? 谢谢
本帖最后由 wtuter 于 2010-02-05 11:43 编辑 [root@ study]# awk '{ a[NR]=$0;print a[2]}' test linlf man china guangdong linlf man china guangdong linlf man china guangdong linlf man china guangdong [root@ study]# awk '{ a[NR]=$0;print a[1]}' test name sex address name sex address name sex address name sex add...