簡體   English   中英

如何使 Awk 與 shell 腳本中的 Bash 數組變量一起使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM