awk基礎學習

2021-08-27 01:29:22 字數 2237 閱讀 3123

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 文字處理後所做的處理 ...