user=(`cat < usernameSorted.txt`)
for (( i=0; i<${#user[@]}; i++ ))
do
`awk '$1 == "${user[$i]}"{print $NF}' process.txt > CMD$i.txt`
done
这就是我使用用户数组元素作为awk说明符的编码方式。如何在AWK命令中插入${user[$I]}。
正如我在评论中所指出的,您的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命令周围出现反勾号。幸运的是,您将标准输出重定向到一个文件,因此执行的字符串为空,不会发生任何事情。