AWK與SHELL之間的變量傳遞方法

我認爲在linuxawk是個好東東啊,處理一些文本文件會很是方便。而在Linux下嘛,常常會和shell打交道,因此awkshell之間的變量相互傳遞,有時仍是頗有必要的,因此簡單總結一下吧。html

 

awk中使用shell中的變量linux

: 「‘$var'」shell

這種寫法你們無需改變用括起awk程序的習慣,是老外經常使用的寫法.:bash

var=」test」
awk ‘BEGIN{print 「‘$var'」}’
ide

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

若是var中含空格,爲了shell不把空格做爲分格符,便應該以下使用:this

var=」this is a test」
awk ‘BEGIN{print 「‘」$var」‘」}’
: ‘」$var」‘
spa

這種寫法與上一種相似.若是變量含空格,則變爲‘」」$var」」‘較爲可靠.
: export 變量,使用ENVIRON[「var」]形式,獲取環境變量的值
.net

例如:
var=」this is a test」; export var;
orm

awk ‘BEGIN{print ENVIRON[「var」]}’
可使用awk-v選項  (若是變量個數很少,我的偏向於這種寫法)

例如:
var=」this is a test」
awk -v awk_var=」$var」 ‘BEGIN {print awk_var}’

這樣便把系統變量var傳遞給了awk變量awk_var.

 

 awkshell變量傳遞值

awkshell傳遞變量,其思想無非是用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」

 

 參考資料:

http://developer.51cto.com/art/200509/3781.htm

http://www.ixpub.net/thread-1457438-1-1.html

Related posts:

  1. awk調用shell,並將變量傳遞給shell

  2. shell中的IFS詳解

  3. Bash腳本處理浮點運算和比較(使用bc或awk)

  4. 交互式shell和非交互式shell、登陸shell和非登陸shell的區別

相關文章
相關標籤/搜索