shell awk 傳參

來源:本站原創 腳本技巧 超過268 views圍觀 0條評論

在寫shell腳本時,經常會使用到awk程序。但是有些復雜的邏輯,可能需要在awk中使用在shell中定義的變量,而且awk程序處理之后,產生的中間變量,還需要在shell中繼續處理。

 

一、那如何在awk中使用在shell中定義的變量呢?

方法一:使用"’把shell變量包起來,即"’$var’";注意是“雙引號+單引號+shell變量+單引號+雙引號”的格式。

這種寫法大家無需改變用’括起awk程序的習慣,是老外常用的寫法;這種寫法其實際是雙括號變為單括號的常量,傳遞給了awk.

例如:

var="abc"

awk ‘BEGIN{print "’$var’"}’

 

方法二:和方法一類似,但使用"’"把shell變量包起來,即"’"$var"’";注意是“雙引號+單引號+雙引號+shell變量+雙引號+單引號+雙引號”的格式。

如果變量的值中包含空格,為了shell不把空格作為分隔符,則應使用方法二。

例如:

var="this a test"

awk ‘BEGIN{print "’"$var"’"}’

 

方法三:export變量,然后在awk中使用ENVIRON["var"]形式獲取環境變量的值

例如:

var="this a test"; export var;

awk ‘BEGIN{print ENVIRON["var"]}’ 

 

方法四:使用awk -v選項;

當變量不是很多時,建議使用這種方式。

例如:
var="this a test"

awk -v awkVar="$var" ‘BEGIN{print awkVar}’

二、那shell中如何使用awk程序中定義的變量呢?

“由awk向shell傳遞變量”,其思想無非是用awk(sed/perl等也是一樣)輸出若干條shell命令,然后再用shell去執行這些命令。

例如:

eval $(awk ‘BEGIN{print "var1=’str1′;var2=’str2’"}’)
或者eval $(awk ‘{printf("var1=%s; var2=%s; var3=%s;",$1,$2,$3)}’ abc.txt)

之后可以在當前shell中使用var1,var2等變量了。
echo "var1=$var1 —– var2=$var2"
———————
作者:rj042
來源:CSDN
原文:https://blog.csdn.net/rj042/article/details/72860177
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文標題:shell awk 傳參
本文鏈接:http://www.qdxgqk.live/?p=4001轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏