gpt4 book ai didi

linux - 如何让 Awk 在 shell 脚本中使用 Bash 数组变量?

转载 作者:行者123 更新时间:2023-12-04 19:06:38 26 4
gpt4 key购买 nike

user=(`cat < usernameSorted.txt`)
for (( i=0; i<${#user[@]}; i++ ))
do
`awk '$1 == "${user[$i]}"{print $NF}' process.txt > CMD$i.txt`
done
这就是我使用用户数组元素作为 awk 说明符的编码方式。如何将 ${user[$i]} 插入 AWK 命令。

最佳答案

正如我在 comment 中指出的那样,你的 awk 脚本用单引号括起来;您的 shell 变量不会在单引号内展开。总的来说,这很好; $NF不是您的 shell 变量之一。
您可能需要使用以下主题的变体:

awk -v user="${user[$i]}" '$1 == user { print $NF }' process.txt > "CMD$i.txt"
您指的是 user作为来自 "${user[$i]}" 的 awk 变量集在命令行上。

剧本中还有其他一些奇怪的地方。 < cat 不需要.您可以使用以下方法避免 Bash 数组:
i=0
for user in $(cat usernameSorted.txt)
do
awk -v user="$user" '$1 == user { print $NF }' process.txt > "CMD$i.txt"
((i++))
done
您不希望 Awk 命令周围出现反引号。幸运的是,您将标准输出重定向到一个文件,因此执行的字符串为空,并且没有任何 react 。

关于linux - 如何让 Awk 在 shell 脚本中使用 Bash 数组变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67680190/

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