A=(aaa bbb ccc)
cat abc.txt | awk '{ print $1, ${A[$1]} }'
Run Code Online (Sandbox Code Playgroud)
我想基于$ 1索引一个数组元素,但上面的代码在awk语法中是不正确的.有人可以帮忙吗?
您无法bash使用内部生成的值索引数组awk,即使您没有使用单引号(从而阻止bash进行任何替换).但是你可以传入数组.
A=(aaa bbb ccc)
awk -v a="${A[*]}" 'BEGIN {split(a, A, / /)}
{print $1, A[$1] }' <abc.txt
Run Code Online (Sandbox Code Playgroud)
由于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
Run Code Online (Sandbox Code Playgroud)
(澄清: 在调用你正在替换它的参数的程序之前bash替换变量,所以当你进入它的时候为时已晚,要求用它来代替特定的元素.)$1awkbashA
如果要对数组进行硬编码A,则可以在中初始化它awk
awk 'BEGIN{A[0]="aaa";A[1]="bbb"}{ print $1, A[$1] }' abc.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13457 次 |
| 最近记录: |