【发布时间】:2021-08-13 05:42:57
【问题描述】:
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 命令。
【问题讨论】:
-
“工作”和“限制范围”是什么意思?你想做什么?除非您能够澄清您的问题以及您期望发生什么以及没有发生什么,否则您的问题将被关闭。请查看how to ask
-
欢迎来到 SO!请使用tour 并阅读How to Ask。您是在问如何将
${user[$i]}插入到 AWK 命令中,对吗?请edit 澄清。对于调试帮助,将minimal reproducible example 包含在示例输入、所需输出和实际输出(如错误)中确实很有帮助。 -
您的
awk脚本用单引号括起来;您的 shell 变量不会在单引号内展开。您可能需要使用awk -v user="${user[$i]}" '…program…' process.txt > "CMD$i.txt"主题的变体,在该主题中,您将在命令行上将user称为从"${user[$i]}"设置的 Awk 变量。 -
一般来说,要对 shell 变量使用 awk(或 sed、grep 或任何其他过滤器),您需要通过过滤器管道回显变量。因此,您的 awk 行看起来更像 >> echo ${user[i]} | awk 'xxxxxxxx') (其中 xxxxxxxx 是您的 awk 命令