9.6/9.7 awk
awk工具
awk也是流行的編輯器,針對文檔中的行來操作,一行一行的操作;
awk具備sed的所有功能,而且更強大。
- awk也是流式編輯器,針對文檔中的行和段進行操作 awk可以分爲幾個部分:
- 匹配字符或者字符串
- 截取文檔中的某一段
- 條件操作符
- 數學運算
- 內置變量
awk內置變量
awk常用的變量有OFS,NR和NF
OFS 用來指定分隔符號
NR 表示行數
NF 表示段數
- head -n2 test.txt|awk -F ':' '{print $1}'
- head -n2 test.txt|awk -F ':' '{print $0}'
- awk -F ':' '{print $1"#"$2"#"$3"#"$4}'
- awk '/oo/' test.txt
- awk -F ':' '$1 ~/oo/' test.txt
- awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt
- awk -F ':' '$3=="0"' /etc/passwd
- awk -F ':' '$3>="500"' /etc/passwd
- awk -F ':' '$3>=500' /etc/passwd
- awk -F ':' '$7!="/sbin/nologin"' /etc/passwd
語法
awk [選項參數] 'script' var=value file(s)
或
awk [選項參數] -f scriptfile var=value file(s) - 選項參數說明:
- -F fs or --field-separator fs
- 指定輸入文件折分隔符,fs是一個字符串或者是一個正則表達式,如-F:。
- -v var=value or --asign var=value
- 賦值一個用戶定義變量。
- -f scripfile or --file scriptfile
- 從腳本文件中讀取awk命令。
- -mf nnn and -mr nnn
- 對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。
- -W compact or --compat, -W traditional or --traditional
- 在兼容模式下運行awk。所以gawk的行爲和標準的awk完全一樣,所有的awk擴展都被忽略。
- -W copyleft or --copyleft, -W copyright or --copyright
- 打印簡短的版權信息。
- -W help or --help, -W usage or --usage
- 打印全部awk選項和每個選項的簡短說明。
- -W lint or --lint
- 打印不能向傳統unix平臺移植的結構的警告。
- -W lint-old or --lint-old
- 打印關於不能向傳統unix平臺移植的結構的警告。
- -W posix
- 打開兼容模式。但有以下限制,不識別:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作爲一個域分隔符;操作符和=不能代替^和^=;fflush無效。
- -W re-interval or --re-inerval
- 允許間隔正則表達式的使用,參考(grep中的Posix字符類),如括號表達式[[:alpha:]]。
- -W source program-text or --source program-text
- 使用program-text作爲源代碼,可與-f命令混用。
- -W version or --version
- 打印bug報告信息的版本。