[英]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]
將被設置為awk
, ARGV[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.