為什么name[42]的值會(huì)是42呢?
+=計(jì)算總數(shù)(sum)
為什么name[42]的值會(huì)是42呢?
+=計(jì)算總數(shù)(sum)
第七題的例二中的:l=asorti(c) 你的解釋是沒有問題的,但是好像漏寫點(diǎn)
你解釋說:利用asorti函數(shù)對(duì)數(shù)組的下標(biāo)進(jìn)行排序,并獲取數(shù)組長度,即輸出文件的列數(shù)(NF值)
好像你沒有把a(bǔ)sorti的功能的另一個(gè)特點(diǎn)說出來,它與asort是不一樣。asorti(a)了以后會(huì)用數(shù)字來作為indices,但是它會(huì)用原來的indices作為數(shù)組的值,除非你指定另一個(gè)參數(shù)如:asorti(a,b)。
回復(fù) yinyuemi
合并file1和file2,除去重復(fù)項(xiàng):
awk 'NR==FNR{a[$0]=1;print} #讀取file1 ...
tt_yy123 發(fā)表于 2011-11-14 16:57
a[$0]=1====>為什么要等于1啊,必須這樣寫么?
最近也看到了數(shù)組其中有幾點(diǎn)書中講的不是很清楚,列入a=$1 在awk中數(shù)組的下表應(yīng)該不能這么寫把?這樣寫把他識(shí)別為一個(gè)字符,那么我文件里面全是數(shù)字。后面的值是這個(gè)值是下表去匹配的值么?比如a[$0]=$1 這個(gè)意思是 在整個(gè)文本中。只遍歷$1這一列么?
好吧。我還沒說清楚,是這樣
文件:
a b c d
e v n m
數(shù)組 a 他的下標(biāo)是3的時(shí)候,值為c
a=$4 他的標(biāo)的值是1 值為d、下標(biāo)為2 值為m?
奧。也就是說
a=$4
其實(shí)就是
a[d]=$4
第二行是
a=$4
就是
a[m]=$4
。那么前面的還是存放在數(shù)組上,只不過統(tǒng)計(jì)第四列。
我又來了,
文本:
A 1 2 3 4
B 1 2 3
C 1 2 3 4
awk '{for(i=2;i<=NF;i++)print $1,$i}
這里最后打印的$i 因?yàn)閕=2,直接打印i的時(shí)候i是從2開始的。$i從1開始?但不明白原理。求指點(diǎn)。
沒有打印“i”就是如果我打印了i 最后他們的順序是從2開始。 如果是 $i就從一開始。所以不明白 最后打印$1是和意思。
還有一個(gè)問題,就是自己理解的例子,a[$1,++b[$1]]
理解:
1:a是數(shù)組的名字,第一個(gè)$1先記錄文件第一列的內(nèi)容。
2:++b[$1]在第一列重復(fù)出現(xiàn)的每次+1,至少有一次。
3:第一個(gè)$1,不影響++b[$1],完全是倆從概念
4:最后它們的都是a數(shù)組的下表。
最后不明白的就是這樣的寫法他都能起到什么作用呢。
歡迎光臨 Chinaunix (http://www.72891.cn/) | Powered by Discuz! X3.2 |