9.6/9.7 awk
awk是一種很棒的語言,它適合文字處理和報表生成,其語法較為常見,借鑑了某些語言的一些精華,如c語言等。awk在linux系統日常處理工作中,發揮很重要的作用,掌握了awk將會使你的工作變的高大上。
awk語法比sed多,有變數、陣列和語句控制,所以功能更加強大。不過初學awk建議先學一些常用的用途,後期再深入。最一開始不深入語法的話,awk比sed主要多了分段功能。
awk命令列格式為:awk [選項] 『』 輸入文字
。-f選項指定分段符,如果不知定的話,預設為空格。在awk中,花括號用於將幾塊**組合到一起,這一點類似c語言。以awk '' /etc/passwd
為例,這裡指定/etc/passwd為輸入檔案。執行awk時,它依次對/etc/passwd中的每一行執行 print命令。所有輸出都傳送到stdout,所得到的結果與執行cat /etc/passwd 完全相同。awk和grep、sed一樣,是流處理模式,逐行處理文字,$0代表當前處理的行。
下面結合正規表示式,列出一些常用的awk命令。學習初期掌握這些基本夠用,要多練習相關功能。先建立乙個test.txt試驗:cp /etc/passwd test.txt
。
head -n2 test.txt|awk -f ':' '' #以冒號為分隔符,列印第一段
head -n2 test.txt|awk -f ':' '' #以冒號為分隔符,列印整行
awk -f ':' '' #以冒號為分隔符,列印第1、2、3、4段,中間以井號間隔
awk '/oo/' test.txt #列印包含oo的行
awk -f ':' '$1 ~/oo/' test.txt #以冒號為分隔符,列印第一列包含oo的行
awk -f ':' '/root/ /games/ ' test.txt #以冒號為分隔符,列印包含root行的第
一、三段,列印包含games行的第
一、三段
awk -f ':' '$3=="0"' /etc/passwd #以冒號為分隔符,列印第三段是文字0的行,雙引號代表字元,沒有雙引號代表數字
awk -f ':' '$3>="500"' /etc/passwd #以冒號為分隔符,列印第三段大於等於字串500的行
awk -f ':' '$3>=500' /etc/passwd #以冒號為分隔符,列印第三段大於等於數字500的行
awk -f ':' '$7!="/sbin/nologin"' /etc/passwd #以冒號為分隔符,列印第七段不為/sbin/nologin的行
awk -f ':' '$3<$4' /etc/passwd #以冒號為分隔符,列印第三段小於第四段的行
awk -f ':' '$3>"5" && $3<"7"' /etc/passwd #以冒號為分隔符,列印第三段大於字元5且第三段小於字元7的行
awk -f ':' '$3>1000 || $7=="/bin/bash"' /etc/passwd #以冒號為分隔符,列印第三段大於1000或者第七段等於/bin/bash的行
head -5 /etc/passwd |awk -f ':' ' 『 #以冒號為分隔符,列印每行第1、3、4段,並以井號間隔
awk -f ':' ' }' /etc/passwd #以冒號為分隔符,如果第三段大於1000則列印第1、3、4段,並以井號間隔
head -n3 /etc/passwd | awk -f ':' '『 #以冒號為分隔符,逐行列印該行列數
head -n3 /etc/passwd | awk -f ':' '『 #以冒號為分隔符,逐行列印該行行數
awk 'nr>40' /etc/passwd #列印行數大於40的行
awk -f ':' 'nr<20 && $1 ~ /roo/' /etc/passwd #列印行數小於20並且第一段包含roo的行
head -n 3 /etc/passwd |awk -f ':' '$1="root"『 #以冒號為分隔符,給第一段賦值root,然後列印每一行
awk -f ':' '; end ' /etc/passwd #逐行做完tot=tot+3的運算,最後列印出tot的值
awk -f ':' '}' /etc/passwd #如果第一段是root,列印該行
Linux shell正規表示式 awk
在 linux unix 系統中,awk 是乙個功能強大的編輯工具,逐行讀取輸入文字,並根據指定的匹配模式進行查詢,對符合條件的內容進行格式化輸出或者過濾處理,可以在無互動的情況下實現相當複雜的文字操作,被廣泛應用於 shell 指令碼,完成各種自動化配置任務。1.awk的命令格式如下 1 awk ...
linux正規表示式awk講解
awk和sed一樣是流式編輯器,它也是針對文件中的行來操作的,一行一行的去執行。awk比sed更加強大,它能做到sed能做到的,同樣也能做到sed不能做到的。awk常用來分段 awk不用加任何引數就可以實現 這些特殊符號 1 擷取文件中的某個段 1 2 3 4 5 6 7 8 9 root yong...
正規表示式簡單語法及常用正規表示式
基本符號 表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 表示匹配 零次到多次 表示匹配 一次到多次 至少有一次 表示匹配零次或一次 表示匹配單個字元 表示為或者,兩項中取一項 小括號表示匹配括號中全部字元 中括號表示匹配括號中乙個字元 ...