如何将不同的变量添加到数组中显示的 AWK 结果中?

How do I add different variables to an AWK result which is showing in array?

我有 awk 的输出:

vfp-10m1
vfp-8m1
vfp-9m1
vfp-10m2
vfp-8m2
vfp-9m2
vfp-10vr
vfp-8vr
vfp-9vr

我怎样才能让每一行都有其唯一的变量?像 A=vfp-8m1B=vfp-8m2 等等?

出于演示目的:

$ cat awk.out
vfp-10m1
vfp-8m1
vfp-9m1
vfp-10m2
vfp-8m2
vfp-9m2
vfp-10vr
vfp-8vr
vfp-9vr

一个想法使用 mapfileawk 输出加载到名为 vars[]:

的数组中
mapfile -t vars < awk.out

# NOTE: feeding directly from a `awk` script:

mapfile -t vars < <(awk '1' awk.out)

数组内容:

$ typeset -p vars
declare -a vars=([0]="vfp-10m1" [1]="vfp-8m1" [2]="vfp-9m1" [3]="vfp-10m2" [4]="vfp-8m2" [5]="vfp-9m2" [6]="vfp-10vr" [7]="vfp-8vr" [8]="vfp-9vr")

通过循环访问:

for i in "${!vars[@]}"
do
    echo "index=$i ; value=${vars[i]}"
done

生成:

index=0 ; value=vfp-10m1
index=1 ; value=vfp-8m1
index=2 ; value=vfp-9m1
index=3 ; value=vfp-10m2
index=4 ; value=vfp-8m2
index=5 ; value=vfp-9m2
index=6 ; value=vfp-10vr
index=7 ; value=vfp-8vr
index=8 ; value=vfp-9vr

如果你的行数不超过字母

awk 'BEGIN {i=65} {printf("%c=%s\n",i++,[=10=])}' file.txt

否则使用 A0A1、...

这样的数字