awk中使用shell變量

 awk中使用shell的變量shell

A="2 days ago" ide

B=2 spa

C=aoa orm

1)  經過將shell變量賦值給awk變量的方法 字符串

awk -v format="$A" 'BEGIN{print format}' it

結果:2 days ago io

2)  經過shell執行命令的方式,來將變量的值傳給awk form

shell中執行的時候會將單引號中的內容做爲變量傳送給awk程序。 class

若是沒有單引號shell會解析meta字符({),將{print 2}解析成命令塊,所以awk會出現語法錯誤。根據此特性咱們能夠來引用shell的變量,例如 awk

1awk 'BEGIN{print '$B'}'用單引號將meta字符關閉,而$Bshell解析成值2,最後將BEGIN{print 2}傳給awk,從而達到引用shell變量的目的。

2)若是此處shell變量的值爲字符串,如C=aoa, awk 'BEGIN{print '$C'}'awk會認爲aoaawk中的變量,因此輸出空;若是要輸出字符串能夠加上雙引號,如awk 'BEGIN{print "'$C'"}'將兩個雙引號分別放到先後兩組單引號中,shell傳給awk的值爲BEGIN{print "aoa"},因此輸出aoa

3)若是shell變量中包含有其餘meta字符,如A="2 days ago"(空格是meta charater),

使用awk 'BEGIN{print "'"$A"'"}'來將2 days ago中的meta charater關閉,再傳給awk

"$A"用來消除值中的meta charater,在單引號中的雙引號在進入awk後來用來將2 days ago做爲一個字符串來print

在使用system命令時,可能會有這種狀況:

awk 'BEGIN{system("date -d \"2 days aog\"")}'若是要把2 days ago換成$A,能夠用上面的方法:awk 'BEGIN{system("date -d \"'"$A"'\"")}'

總結:能夠先寫好awk語句,在須要引用變量的時候,將變量先後用單引號來分割成三部分,其中變量交給shell來處理,當$Ameta charater的時候,須要在$A外加上雙引號。

相關文章
相關標籤/搜索