當我輸入:
echo "foo bar" | gawk -v var="content" '{print $var}'
我預計輸出為content
.為什麼foo bar
?
答案1
變數按名稱引用,如 in var
,而不是$var
in awk
。$n
指的是n
第 場地:$1
對於第一個字段,$2
對於第二個...或整個記錄n
== 0 ($0
是完整記錄)。
這些不一定是字面數字。您可以使用$(1+1)
或$variable
。如果variable
包含1
,則將$variable
是第一個欄位。常用的是$NF
最後一個欄位(NF
是包含欄位數量的特殊變數)。
如果像您的範例一樣,變數不包含數字,那麼非數被理解為0。
因此var="content"; print $var
, 與 相同var=0; print $var
,因此與 相同print $0
,即列印整個記錄。
你在這裡想要的是:
echo "foo bar" | gawk -v var="content" '{print var}'