我有文件,其中包含IP地址的列表:如何用'awk'動態增加數組?
1.1.1.1
2.2.2.2
3.3.3.3
5.5.5.5
1.1.1.1
5.5.5.5
我想創建的文件,打印像上面提到的IP的計數器列表:
1.1.1.1: 2
2.2.2.2: 1
3.3.3.3: 1
5.5.5.5: 2
其中2,1,1,2是計數器。
我開始寫,對最終計的IP工作腳本和已知的計數,但不知道如何繼續
./ff.sh file_with_IPs.txt
腳本
#!/bin/sh
file=$1
awk '
BEGIN {
for(x=0; x<4; ++x)
count[x] = 0;
ip[0] = "1.1.1.1";
ip[1] = "2.2.2.2";
ip[2] = "3.3.3.3";
ip[3] = "5.5.5.5";
}
{
if($1==ip[0]){
count[0] += 1;
} else if($1==ip[1]){
count[1] += 1;
}else if($1==ip[2]){
count[2] += 1;
}else if($1==ip[3]){
count[3] += 1;
}
}
END {
for(x=0; x<4; ++x) {
print ip[x] ": " count[x]
}
}
' $file > newfile.txt
我,我不」的主要問題t知道存儲在文件中的IP數量以及它們的外觀。
所以我需要增加數組ip
每當awk捕獲新的IP。
您是否考慮過使用'uniq'?或者有什麼理由想要保持awk? – leijon 2013-04-22 08:25:27
我運行的文件和文件列表中不僅包含ips(其他垃圾)。使用'awk',我可以將ip作爲值 – 2013-04-22 08:30:16
,但是如果您知道如何使用'uniq',您可以發佈您的答案。 – 2013-04-22 08:31:00