awk怎樣自定義變數以及常用bash傳遞的變數

2021-06-16 11:24:18 字數 980 閱讀 4637

linux伺服器管理、bash指令碼編寫過程中經常用到awk進行資料分析,awk變數使用過程中又經常因為出現歧義或者定義不規範,導致無法得到預期的結果。本文用最簡潔的例子說明awk變數如何正確的定義和使用。

1在awk中自定義變數

通過-v引數便可以自定義變數傳遞給awk使用,如果是begin中呼叫的話,變數的定義必須緊鄰awk命令,如下所示:

[root@none ~]# awk -v var='bianliang' 'begin'

bianliang

如果用:[root@none ~]# awk 'begin' -v var='bianliang'

顯示的結果將是空,因為變數定義在了begin使用以後。

為了養成乙個好的指令碼編寫習慣,建議所有的變數都使用第一種習慣,緊鄰awk命令加-v引數進行變數定義 2

在awk中使用bash傳遞的變數

類似自定義變數,在指令碼中可以輕易的用-v引數將bash的變數傳遞給awk,如下所示:

[root@none ~]# name=sni7

[root@none ~]# awk  -v var=$ 'begin'

sni7 3

awk中定義多個變數

在定義每個變數的時候,都必須重新加入-v引數,如:

# awk -v year=2013 -v month=04 '$2 ~ year"/"month"/[0123]" ' ceb2013.lst

就是說定義了year、month兩個變數。

以上awk命令的含義是:匹配ceb2013.lst中,第二列為「2013/04/**」(即日期是2023年4月份某天)這樣格式的內容,將第二列、第三列和最後一列列印輸出。注意,$2、$3、$nf都是系統變數,系統變數是需要字首的,但是自定義變數不需要任何字首。

同時為了區分自定義變數和普通文字,在輸出文字的時候需要使用雙引號將文字引用起來。

awk中自定義函式

awk中自定義函式 定義和呼叫使用者自己的函式是幾乎每個高階語言都具有的功能,awk也不例外,但原始的awk並不提供函式功能,只有在nawk或較新的awk版本中才可以增加函式。函式的使用包含兩部分 函式的定義與函式呼叫。其中函式定義又包括要執行的 函式本身 和從主程式 傳遞到該函式的臨時呼叫。awk...

centOS怎樣強制解除安裝PHP以及自定義安裝PHP

這個是原創的,當然也是在前人的基礎上,自己留個拷貝,其他人也不用再摸索了。很無語,centos居然php版本才5.1.6,很多開源的cms無法安裝。檢視php版本命令 php v 這個命令是刪除不乾淨的 yum remove php 因為使用這個命令以後再用 php v 還是會看到有版本資訊的。必須...

怎樣自定義CSDN樣式

來自 如果你已經有了乙個比較個性化的計數器的話,下面我教你如何為csdnblog製作自定義 的功能,如果你沒有並且需要為你的csdnblog新增乙個個性化計數器的話,可以參閱我寫的另一篇文章。關於給csdnblog新增計數器 1 使用系統定義 系統為我們已經提供了幾個定義好的 介面,我們可以通過 選...