awk数组

[cailu@cobbler-test ~]$ awk '{a[$1]=$5}END{for(i in a)print i,a[i]}' urfile  
sshd 10:06
was 09:04
root 10:06
[cailu@cobbler-test ~]$ cat urfile 
root       557  2532  0 09:04 ?        00:00:00 sshd: was [priv] 
was        563   557  0 09:04 ?        00:00:05 sshd: was@pts/1  
root      1132  2532  0 09:31 ?        00:00:00 sshd: root@pts/0 
root      1273  2532  0 10:06 ?        00:00:00 sshd: root [priv]
sshd      1274  1273  0 10:06 ?        00:00:00 sshd: root [net]




$1作为下标 $5域的值 赋给数组a




[root@jssweb awk]# awk '{id[NR]=$3};END{for(x=1; x <= NR;x++) print id[x]}' employees
1234
1111
4444
4444
1000
7666


2 awk变量NR包含当前的记录号,通过NR作为下标,各个记录的第3个域的值


被赋给数组中相应的元素.最后,在END模块中,for 循环被用于循环整个数组


打印那些存储在数组中的值


[root@jhoa ~]#  awk '{id[NR]=$3};END{for(x=1; x <= NR;x++) print x, id[x]}'  awk.txt 
1 2532
2 557
3 2532
4 2532
5 1273




[root@jhoa ~]#  awk '{id[NR]=$3};END{for(x in id)  print x,  id[x]}'   awk.txt 
4 2532
5 1273
1 2532
2 557


x用于循环数据id的下标,id[x]循环数组元素




[root@jhoa ~]#  awk '{id[$2]};END{for(x in id)  print x}'   awk.txt 
563
1132
557
1273
1274
把$2元素代表下标






你可能感兴趣的:(awk数组)