[英]How do I make the Awk work with Bash array variables in a shell script?
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 命令。
正如我在評論中指出的那樣,您的 Awk 腳本用單引號括起來; 您的 shell 變量不會在單引號內展開。 總的來說,這很好; $NF
不是您的 shell 變量之一。
您可能需要使用以下主題的變體:
awk -v user="${user[$i]}" '$1 == user { print $NF }' process.txt > "CMD$i.txt"
您在其中將user
稱為 Awk 變量,該變量是從命令行上的"${user[$i]}"
設置的。
劇本中還有其他一些奇怪的地方。 <
對於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 命令周圍出現反引號。 幸運的是,您將標准 output 重定向到一個文件,因此執行的字符串為空,並且沒有任何反應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.