1. 程式人生 > >Linux運維正則表達式之awk

Linux運維正則表達式之awk

sed pro inux運維 結構 inux 更改 部分 ram root

一:Linux運維正則表達式之sed

AWK是一個優良的文本處理工具,Linux及Unix環境中現有的功能最強大的數據處理引擎之一。

1.選項|參數:

-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報告信息的版本。

二.實例練習:

-F 定義字段分隔符
[root@localhost ~]# awk -F: ‘{print $1,$4}‘ test.txt 取每行第一和四個分割
[root@localhost ~]# awk -F: ‘{print $1,$4}‘ test.txt 去最後一段
NR行號
[root@localhost ~]#
[root@localhost ~]# awk -F: ‘NR<=2 || NR>=7{print NR,"------",$1}‘ test.txt

[root@localhost ~]# awk -F: ‘/nologin$/{print $1}‘ test.txt #打印以nologin結尾行的第一個字段

[root@localhost ~]# awk -F: ‘$1~/^r.*t$/{print NR,$3}‘ test.txt 打印第一字段以r開頭以t結尾
[root@localhost ~]# awk -F: ‘$1=="root"{print NR,$3}‘ test.txt 匹配第一字段為root

[root@localhost ~]# awk -F: ‘$3 >= 7{print NR,$1}‘ test.txt 打印uid大於等於7的字段
[root@localhost ~]#
[root@localhost ~]# count=7
[root@localhost ~]# awk -v x=$count -F: ‘$3 >= x{print NR,$1}‘ test.txt 自定義 #一個conut變量可以更改conut=幾,打印的結果也隨之改變

[root@localhost ~]# ifconfig | awk ‘NR==2{print $2}‘ #取IP地址

[root@localhost ~]# ip_addr=`ifconfig | awk ‘NR==2{print $2}‘`
[root@localhost ~]# echo $ip_addr #保存ip地址

[root@localhost ~]# cat a.txt |sort |uniq #查看並去重
[root@localhost ~]# cat a.txt |sort |uniq -c #查看去重數


[root@localhost ~]# cat test.txt |cut -d: -f1,3 查看第一和第三部分

[root@localhost ~]# du -sh /etc 查看目錄大小
36M /etc

[root@localhost ~]# find / -type f 文件類型
[root@localhost ~]# find / name "*.txt" 找出所有.txt結尾的文件
[root@localhost ~]# find / -size +30M 找出/下大於30M的文件
[root@localhost ~]# find / -size -30M -size +10M 大於10M小於30M
[root@localhost ~]# find / -size +2M -type f -name \*.txt

Linux運維正則表達式之awk