如何将不同的变量添加到数组中显示的 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-8m1
和 B=vfp-8m2
等等?
出于演示目的:
$ cat awk.out
vfp-10m1
vfp-8m1
vfp-9m1
vfp-10m2
vfp-8m2
vfp-9m2
vfp-10vr
vfp-8vr
vfp-9vr
一个想法使用 mapfile
将 awk
输出加载到名为 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
否则使用 A0
、A1
、...
这样的数字
我有 awk 的输出:
vfp-10m1
vfp-8m1
vfp-9m1
vfp-10m2
vfp-8m2
vfp-9m2
vfp-10vr
vfp-8vr
vfp-9vr
我怎样才能让每一行都有其唯一的变量?像 A=vfp-8m1
和 B=vfp-8m2
等等?
出于演示目的:
$ cat awk.out
vfp-10m1
vfp-8m1
vfp-9m1
vfp-10m2
vfp-8m2
vfp-9m2
vfp-10vr
vfp-8vr
vfp-9vr
一个想法使用 mapfile
将 awk
输出加载到名为 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
否则使用 A0
、A1
、...