簡體   English   中英

awk 將命令輸出插入到變量中

[英]Awk insert a command output into a variable

我正在嘗試將下面的輸出插入變量x 輸出是一個字符串。 我以前做過這個。

k="psz"

當我這樣做時,它會起作用,並且在執行 echo $x 時我得到了預期的輸出

x=$( awk -v a="k" -F '[:,]' '{ if($1 == "psz")  print $5 }' /etc/passwd )

但是當我嘗試在下面使用這個時它不起作用

x=$( awk -v a="k" -F '[:,]' '{ if($1 == a)  print $5 }' /etc/passwd )

它不起作用, echo $x給了我一個空行。

您正在使用字符串k而不是變量$k的值設置a 如果設置正確,代碼將正常工作。 看:

k='accdias'
x=$(awk -va=$k 'BEGIN{FS=":"} $1==a {print $5}' /etc/passwd)
echo $x
Antonio Dias

我正在編輯它以顯示另一種將變量值傳遞給awk程序而不使用-v

k='accdias'
x=$(awk 'BEGIN{FS=":"} $1==ARGV[2] {print $5}' /etc/passwd $k)
echo $x
Antonio Dias

在上面的代碼中, ARGV[0]將被設置為awkARGV[1]將被設置為/etc/passwd ,最后ARGV[2]將被設置為$k值,這是該示例中的accdias


Ed Morton 的編輯(見下面的評論):

k='accdias'
x=$(awk -v a="$k" 'BEGIN{FS=":"} $1==a {print $5}' /etc/passwd)
echo "$x"
Antonio Dias

k='accdias'
x=$(awk 'BEGIN{FS=":"; a=ARGV[2]; ARGV[2]=""; ARGC--} $1==a {print $5}' /etc/passwd "$k")
echo "$x"
Antonio Dias

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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