awk使用shell變數

germany006發表於2014-08-21
轉載地址:http://blog.163.com/zihuan_xuan/blog/static/1287942432012111041854341/


awk使用shell變數  

2012-12-10 16:18:54|  分類: linux|舉報|字號 訂閱

其實在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變數.





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1255515/,如需轉載,請註明出處,否則將追究法律責任。

相關文章