awk 處理流的形式也是一行一行的,讀取一行然後按照指定的模式進行處理,處理完成後預設輸出到終端。
awk [-f fild:separator] 'command' filename
[-f fild-separator ]是可選的,awk預設以空格作為預設的分隔符號,在指令碼中可以通過fs=「x」來設定,x是任意分割符。
表示式匹配的特殊字元
\ ^ $ . [ ] | ( ) * + ?
argc 命令列引數個數
argv 命令列引數排列
environ 支援佇列中系統環境變數的使用
filename awk 瀏覽的檔名
fnr 瀏覽檔案的記錄數
fs 設定輸入域分隔符,等價於命令列- f 選項
nf 瀏覽記錄的域個數,用$nf可以表示最後乙個域
nr 已讀的記錄數
ofs 輸出域分隔符,ofs="#",輸出分隔符就是#
ors 輸出記錄分隔符
rs 控制記錄分隔符
awk的正規表示式在
//裡面,模式匹配的sed差不多
找到所有含有root的行,列印第乙個域
awk -f : '/root/' /etc/passwd
找到行首是root的行,列印第乙個域
awk -f : '/^root/' /etc/passwd
用~來進行字段匹配,第乙個域是root的行
awk -f : '$1~/root/' /etc/passwd
找到第乙個域不是root的行
awk -f : '$1!~/root/' /etc/passwd
用print的時候,不同引數之間用逗號作分割符號,則輸出以空格作為分割符號;若以空格作為引數分割符號,輸出被不存在分隔符號
echo "etc/fire/test.c" | awk -f / '' ==>> home fire test.c
echo "etc/fire/test.c" | awk -f / '' ==>> homefiretest.c
開始結束都加hello,中間列印第乙個域
awk -f: 'begin end' /etc/passwd
找出第乙個域是root的行,注意不能寫成=,如果寫出=,那麼就把所有行的第乙個域都賦值為root,所有行都匹配
awk -f: ' print $0' /etc/passwd
找出第三個域值是32的行
awk -f: '' /etc/passwd
不等於找出第乙個域不是root的行
awk -f: '' /etc/passwd
與找出第乙個域是root並且第五個域也是root的行
awk -f: '' /etc/passwd
nf:每行記錄域的總個數
awk -f: '' /etc/passwd
nr:已讀記錄域的數目
awk -f: '' /etc/passwd
每行首加總域數和已讀域數
awk -f: '' /etc/passwd
在保證一行的域大於0,乙個域是root的情況下,列印所在行號和行
awk -f: '' /etc/passwd
顯示當前目錄的名字,用$nf來顯示最後乙個域
pwd | awk -f / ''
顯示乙個目錄的檔案名字
echo "/home/firefoxbug/test.c" | awk -f / ''
找到第乙個域是root行,並把第三個域加3,第四個域加4
可以用{}對匹配的行進行操作,若要執行多條語句,用
;分割awk -f: '}' /etc/passwd
在每行最後新增乙個域,域值是第三個域值和第四個域值的和
awk -f: '' /etc/passwd
統計當前目錄下所有檔案長度,首先排除目錄,然後求得ls -l 的第五個域總和
ls -l | grep '^[^d]' | awk ' end'
awk的printf函式,printf函式用法和c語言類似
awk 'begin'
awk命令中傳遞引數
awk '模式' 變數=值 filename
比如檢視 df -k 第四個域大於target的項,其中target是使用者指定的
df -k | awk ' }' target=650000
檢視/etc/passwd下第乙個域是user的行,其中user由使用者指定
awk -f : '}' user=root /etc/passwd
awk 基礎語法 2 awk變數
0當前處理行的所有記錄 1,2,3.n檔案中每行以間隔符號分割的不同字段 nf當前記錄的字段數 列數 nf最後一列 fnr nr行號 fs定義間隔符 ofs定義輸出字元分隔符,預設空格 rs輸入記錄分隔符,預設換行 ors輸出記錄分隔符,預設換行 1.2.1.案例資料 chen localhost ...
awk十三問 AWK學習之旅
awk學習之旅 十三個常用命令行處理 root monitor awkdir cat emp.txt beth 4.00 0 dan 3.75 0 kathy 4.00 10 mark 5.00 20 mary 5.50 22 susie 4.25 18 1.不列印最後一列 awk begin nf...
shell程式設計 awk基礎
語法格式 一awk begin patternend file name 二standard output awk begin patternend 基本格式 awk begin patternend begin 文字處理前所做的處理 pattern 對文字具體的處理 end 文字處理後所做的處理 ...