我有一個創建關聯數組的bash腳本。 然後,我啓動一個awk命令來分析grep命令的輸出。 在我的awk命令中,我想使用關聯的數組進行打印,但如果我理解的很好,awk將無法訪問它。那我該怎麼做呢?在awk中使用外部關聯數組
我只想列出其速度爲「10」,「a-10」,「100」或「a-100」的每個端口的每個設備(每個設備1個文件)。在輸出中,我需要的端口(GIX/X/X),該VLAN,速度和充分說明
for entry in `ls TF5* | grep -v ".desc"`; do
declare -A description
while read line
do
if echo $line | grep "Gi" > /dev/null
then
port=$(echo "$line" | awk '{print $1}')
description[${port}]=$(echo "$line" | tr -s ' ' | cut -d' ' -f4-)
fi
done < $entry.desc
grep " a-10 " $entry | awk '{printf ("a10:\t%s ;\t%s ;\t%s ;\n", $1, "$description[$1]", $4)}'
...
輸入樣本: 文件TF5XXXXXX而不.desc
Port Name Status Vlan Duplex Speed Type
Gi1/0/1 *** SW1-BTB-XXX connected trunk a-full a-1000 10/100/1000BaseTX
Gi1/0/4 XYZAB connected trunk a-full a-100 10/100/1000BaseTX
Gi1/0/5 YAZER connected trunk a-full 10 10/100/1000BaseTX
Gi1/0/6 BLABL connected trunk a-full a-10 10/100/1000BaseTX
Gi1/0/7 AHAHO connected trunk a-full 1000 10/100/1000BaseTX
Gi1/0/8 XXXXX connected trunk a-full 100 10/100/1000BaseTX
Gi1/0/9 XXXXX connected trunk a-full a-1000 10/100/1000BaseTX
文件TF5XXXXXX與.desc
Interface Status Protocol Description
Vl1 admin down down
Vl101 up up
Fa0 down down
Gi1/0/1 up up *** SW1-BTB-BALBLA ***
Gi1/0/2 down down
Gi1/0/3 down down DESCRIPTION CENSURED BUT I NEED TO CATCH IT
Gi1/0/4 up up DESCRIPTION CENSURED BUT I NEED TO CATCH IT
Gi1/0/5 up up DESCRIPTION CENSURED BUT I NEED TO CATCH IT
Gi1/0/6 up up DESCRIPTION CENSURED BUT I NEED TO CATCH IT
Gi1/0/7 up up DESCRIPTION CENSURED BUT I NEED TO CATCH IT
Gi1/0/8 up up DESCRIPTION CENSURED BUT I NEED TO CATCH IT
Gi1/0/9 up up DESCRIPTION CENSURED BUT I NEED TO CATCH IT
輸出樣本:
a-100 TAB Gi1/0/4 TAB DESCRIPTION TAB VLAN
10 TAB Gi1/0/5 TAB DESCRIPTION TAB VLAN
a-10 TAB Gi1/0/6 TAB DESCRIPTION TAB VLAN
100 TAB Gi1/0/8 TAB DESCRIPTION TAB VLAN
感謝您的時間:)
正確的,AWK是不是殼。擺脫你的shell循環,只要做你想在awk中做的事情。請參閱http://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice。發佈一些示例輸入和期望的輸出,如果你想獲得幫助。 –
不要分析'ls'。使用'輸入TF5 *;而不是[[$ f =〜.desc]] && continue'。 – chepner
我已經在輸出中添加了一些輸入和我想要的內容。 – Rian