awk中使用shell變量

其實在awk裏,是不能直接使用shell變量的
方法是:awk -v 選項讓awk 裏使用shell變量

TIME=60 
awk -v time="$TIME" 'BEGIN{FS="|"} {if ($7>time) print $2 }' 

這樣要注意:在awk裏,time不能加$符號。

網上說如下方法都可行:

一:"'$var'"

這種寫法大家無需改變用'括起awk程序的習慣,是老外常用的寫法.如:

var="test" 
awk 'BEGIN{print "'$var'"}'

這種寫法其實際是雙括號變爲單括號的常量,傳遞給了awk.

如果var中含空格,爲了shell不把空格作爲分格符,便應該如下使用:

var="this is a test" 
awk 'BEGIN{print "'"$var"'"}' 

二:'"$var"'

這種寫法與上一種類似.如果變量含空格,則變爲'""$var""'較爲可靠.
三.把括起awk程序的''變爲"",使用"$var"

如:

$var="this is a test" 
awk 'BEGIN{print "$var"}" 

這是因爲在""裏$是特殊字符,而在''裏$是普通字符.

四:export 變量,使用ENVIRON["var"]形式,

如:

$var="this is a test";export $var 
awk 'BEGIN{print ENVIRON["var"]}' 

五:當然也可以使用-v選項

如:

$var="this is a test" 
awk -v nvar="$var" '{print nvar}'

這樣便把系統變量定義成了awk變量.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章