其實在awk裏,是不能直接使用shell變量的
方法是:awk -v 選項讓awk 裏使用shell變量 shell
TIME=60 awk -v time="$TIME" 'BEGIN{FS="|"} {if ($7>time) print $2 }'
這樣要注意:在awk裏,time不能加$符號。ide
網上說以下方法均可行:this
一:"'$var'"code
這種寫法你們無需改變用'括起awk程序的習慣,是老外經常使用的寫法.如:it
var="test" awk 'BEGIN{print "'$var'"}'
這種寫法其實際是雙括號變爲單括號的常量,傳遞給了awk.class
若是var中含空格,爲了shell不把空格做爲分格符,便應該以下使用:test
var="this is a test" awk 'BEGIN{print "'"$var"'"}'
二:'"$var"'awk
這種寫法與上一種相似.若是變量含空格,則變爲'""$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變量.