在Awk中,遍历数组是一种常见的操作。以下是一些遍历数组的技巧:
使用for循环遍历数组:
array=(["apple"]="fruit" ["carrot"]="vegetable")
for item in "${array[@]}"; do
echo "$item : ${array[$item]}"
done
输出:
apple : fruit
carrot : vegetable
使用while循环和数组下标遍历数组:
array=(["apple"]="fruit" ["carrot"]="vegetable")
i=0
while [ $i -lt ${#array[@]} ]; do
item=${array[$i]}
echo "$item : ${array[$item]}"
i=$((i+1))
done
输出与上述for循环示例相同。
使用数组元素作为条件判断:
array=(["apple"]="fruit" ["carrot"]="vegetable")
for item in "${array[@]}"; do
if [ "$item" == "apple" ]; then
echo "Apple is a fruit."
elif [ "$item" == "carrot" ]; then
echo "Carrot is a vegetable."
fi
done
使用关联数组(字典)的特性:
Awk中的关联数组(在Bash中称为字典)允许你使用字符串作为键来存储和检索值。遍历关联数组时,可以使用asorti
函数对键进行排序,然后使用for循环遍历这些键。
declare -A array
array[apple]="fruit"
array[carrot]="vegetable"
sorted_keys=($(asorti -k1,1 "${!array[@]}" | tr ' ' '\n'))
for key in "${sorted_keys[@]}"; do
echo "$key : ${array[$key]}"
done
输出:
apple : fruit
carrot : vegetable
这些技巧可以帮助你在Awk中有效地遍历数组并执行相应的操作。