gpt4 book ai didi

bash - 在awk中使用数组变量?

转载 作者:行者123 更新时间:2023-11-29 08:54:15 26 4
gpt4 key购买 nike

A=(aaa bbb ccc)    
cat abc.txt | awk '{ print $1, ${A[$1]} }'

我想根据 $1 索引数组元素,但上面的代码在 awk 语法中不正确。有人可以帮忙吗?

最佳答案

您不能使用 bash 内部生成的值索引 awk 数组,即使您没有使用单引号(从而防止 bash 进行任何替换)。不过,您可以传入数组。

A=(aaa bbb ccc)
awk -v a="${A[*]}" 'BEGIN {split(a, A, / /)}
{print $1, A[$1] }' <abc.txt

由于awk内部的split函数,A的元素可能不包含空格或换行符。如果您需要做任何更有趣的事情,请将数组设置在 awk 内。

awk 'BEGIN {a[1] = "foo bar"  # sadly, there is no way to set an array all
a[2] = "baz" } # at once without abusing split() as above
{print $1, a[$1] }' <abc.txt

(澄清:bash 替换变量 之前 调用你正在替换其参数的程序,所以当你在 $1 中有 awk 时,要求 bash 使用它来替换特定的已经太晚了A 的元素。)

关于bash - 在awk中使用数组变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com