Bru*_*ord 1 arrays bash awk associative-array
所以我有这个要输入和关联数组:
47 SPRINGGREEN2
48 SPRINGGREEN1
49 MEDIUMSPRINGGREEN
50 CYAN2
51 CYAN1
52 DARKRED
53 DEEPPINK4
Run Code Online (Sandbox Code Playgroud)
它是 bash 脚本的一部分。我正在寻找一种方法来制作一个关联数组,所以它看起来像
declare -A cols=( [SPRINGGREEN2]="0;47"...[DEEPPINK4]="0;53" )
Run Code Online (Sandbox Code Playgroud)
我可以很容易地手动完成。
但我想使用 for 循环来填充数组 cols=( [KEY]="vALUE" ) For 循环将把 47, 48, 49...53 取出到 VALUE 字段中,并将 SPRINGGREEN2...DEEPPINK4 放入关键字段。
我正在考虑使用 awk,但无法弄清楚如何隔离这两个字段并使用每个条目来填充数组。
您是否打算从文件中读取并填充cols数组?
declare -a cols
while read num color; do
cols[$num]=$color
done < file.txt
for key in "${!cols[@]}"; do printf "%s\t%s\n" "$key" "${cols[$key]}"; done
Run Code Online (Sandbox Code Playgroud)
哦,另一方面,如果您已经有了关联数组,并且还想要一个“反向”数组:
declare -a rev_cols
for color in "${!cols[@]}"; do
rev_cols[${cols[$color]#*;}]=$color
done
for key in "${!rev_cols[@]}"; do printf "%s\t%s\n" "$key" "${rev_cols[$key]}"; done
Run Code Online (Sandbox Code Playgroud)