gawk命令
gawk程式是unix中原始awk程式的gnu版本。
它可以用來寫指令碼的方式處理文字資料。
他可以語法格式
gawk options program file
gawk選項
選項描述
-f fs
指定分隔符
-f file
指定含有命令的檔案
-v var=value
定義變數
-mf n
指定處理檔案中最大字段數
-mr n
指定資料檔案中最大資料行數
-w keyword
指定gawk的相容模式或警告等級
從命令列讀取程式指令碼
gawk命令的指令碼使用花括號定義。
gawk命令認為指令碼是一串字串所以還需要用單引號括起來。
gawk程式會針對資料流中的每行文字執行程式指令碼。
注意:如下命令,因為沒有在命令列上指定檔名,gawk缺省會從stdin也就是鍵盤接收資料。
即從鍵盤中中隨便輸入文字,接著都會執行輸出hello world!然後再等待輸入。
[root@tzpc 19unit]# gawk ''this is a testhello world!
ctrl+d可以終止gawk程式
使用資料字段變數
gawk會自動給一行中每個資料字段分配乙個變數
$0代表整個文字行
$1代表文字行中的第1個資料字段
$2代表文字行中第2個資料字段
在文字行中每個資料字段都是通過字段分隔符劃分的。預設是空格或製表符
[root@tzpc 19unit]# catdata2.txtone line of test text.
two lines of test text.
three lines of test text.
[root@tzpc 19unit]# gawk ''data2.txt
onetwo
three
-f引數更改字段分隔符
[root@tzpc 19unit]# gawk -f: '' /etc/passwdrootbindaemon
admlp
syncshutdown
...
在程式指令碼中使用多個命令
使用分號分隔命令即可。
[root@tzpc 19unit]# echo "my name is tz" | gawk ''my name is root
也可以使用如下寫法
因為沒有輸入資料流,所以gawk缺省會從stdin中獲取資料也就是從鍵盤中獲取,所以要手動輸入資料,然後才會執行gawk命令輸出資料,使用ctrl+d退出程式
[root@tzpc ~]# gawk ''my name is tz
my name is root
從檔案中讀取程式命令
使用-f選項指定命令檔案
[root@tzpc 19unit]# cat script2.gawk[root@tzpc 19unit]# gawk -f: -f script2.gawk /etc/passwdroot's home directory is /root
bin's home directory is /bin
daemon's home directory is /sbin
adm's home directory is /var/adm
...
使用含有多行命令的命令檔案
注意:這裡定義了變數text,再次呼叫它的時候不需要加$
[root@tzpc 19unit]# cat script3.gawk[root@tzpc 19unit]# gawk -f: -f script3.gawk /etc/passwdroot's home directory is /root
bin's home directory is /bin
daemon's home directory is /sbin
adm's home directory is /var/adm
lp's home directory is /var/spool/lpd
sync's home directory is /sbin
在處理資料前執行指令碼
使用關鍵字begin
[root@tzpc 19unit]# catdata3.txtline 1line 2line 3[root@tzpc 19unit]# gawk 'begin
> 'data3.txt
the data3 file contents:
line 1line 2line 3
再處理資料後執行指令碼
使用end關鍵字
[root@tzpc 19unit]# gawk 'begin>
> end 'data3.txt
line 1line 2line 3end of file
高大上的格式化輸出報告用法來了,圈重點!
[root@tzpc 19unit]# cat script4.gawkbeginend[root@tzpc 19unit]# gawk -f script4.gawk /etc/passwdthe latest list of users and shells
userid shell
------- -------root /bin/bash
bin /sbin/nologin
postfix /sbin/nologin
sshd /sbin/nologin
tz /bin/bash
this concludes the listing
學習來自:《linux命令列與shell指令碼大全 第3版》第19章
Windows上GAWK的使用 二
gawk內建環境變數 變數 描述 n 當前記錄的第n個字段,欄位間由fs分隔。0 完整的輸入記錄。argc 命令列引數的數目。argind 命令列中當前檔案的位置 從0開始算 argv 包含命令列引數的陣列。convfmt 數字轉換格式 預設值為 6g environ 環境變數關聯陣列。errno ...
Windows上GAWK的使用 三
9.匹配操作符 用來在記錄或者域內匹配正規表示式。如gawk.exe 1 root test.txt將顯示test檔案第一列中以root開頭的行。10.比較表示式 conditional expression r1 expression r2 expression r3,例如 gawk.exe 1 ...
Windows上GAWK的使用 五
14.8.gawk的內建函式 14.8.1.字串函式 sub函式匹配記錄中最大 最靠左邊的子字串的正規表示式,並用替換字串替換這些字串。如果沒有指定目標字串就預設使用整 個記錄。替換只發生在第一次匹配的時候。格式如下 sub regular expression r,substitution str...