一、用awk
有以下幾種方法去呼叫變數:
1. awk '' a=111 b=222 yourfile 注意
, 變數位置要在
file
名之前,
否則就不能呼叫。 還有
, 於
begin{}
中是不能呼叫這些的
variable.
要用之後所講的第二種方法才可解決.
2. awk –
v a=111
–v b=222 '' yourfile 注意
, 對每乙個變數加乙個 –
v 作傳遞.
3. awk '' yourfile
如果想呼叫
environment variable,
要用以上的方式呼叫
, 方法是:
" ' " $logname " ' "
原文:awk
如何引用外部變數
二、進一步解釋 第
3種方法為什麼要加兩個雙引號和乙個單引號?
$ str=hello
$ awk 'begin'
hello
看上去是雙引號套單引號,其實真正的原因為: 這是
shell
的功能,
shell
對單引號和雙引號,按從左到右的順序成對匹配
awk命令用單引號引起來,就是防止
shell
對其中內容進行解釋
awk '' file
實際上就是2部分
1:awk '' 即
awk對
2個單引號內的命令起作用。 至於
$str
就被shell
正常解釋為變數
str的值。
所以,如果
str=hello
,則經解釋後成為,
awk file
而如果str=hello world
,則解釋時,在解釋前一部分:
awk
兩部分。
按照上面的解釋,就可以這麼來修改,比如
a)$ awk 'begin' 或者
b)$ awk "begin" 或者
c)$ awk begin\ 對於
a,解釋成為:
awk begin #因為
$a在替換後,還在「」中包括中,所以當成了乙個字串處理。
三、總結
awk怎麼說也是要執行在
shell
環境中的。所以,寫在
awk中的命令,要先經過
shell
解析後,再交由
awk來解釋和執行。
更多知識:
AWK呼叫SHELL,並將變數傳遞給SHELL
在shell指令碼中呼叫awk是非常自然和簡單的,以前還寫過乙個關於awk shell相互傳遞變數的文章 awk與shell之間的變數傳遞方法 在awk指令碼中,如果需要呼叫shell指令碼 命令,則需要使用system 函式,如果需要將變數傳遞給被呼叫的shell,則寫為 system sh my...
AWK呼叫SHELL,並將變數傳遞給SHELL
在shell指令碼中呼叫awk是非常自然和簡單的,以前還寫過乙個關於awk shell相互傳遞變數的文章 awk與shell之間的變數傳遞方法 在awk指令碼中,如果需要呼叫shell指令碼 命令,則需要使用system 函式,如果需要將變數傳遞給被呼叫的shell,則寫為 system sh my...
AWk的呼叫精華
awk 的呼叫方式 awk 提供了適應多種需要的不同解決方案,它們是 一 awk 命令列,你可以象使用普通unix 命令一樣使用awk,在命令列中你也可以使用awk 程式語言,雖然awk 支援多行的錄入,但是錄入長長的命令列並保證其正 確無誤卻是一件令人頭疼的事,因此,這種方法一般只用於解決簡單的問...