Linux運維正則表達式之awk

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

二.實例練習:ui

-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 unix

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

[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=幾,打印的結果也隨之改變it

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

[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

相關文章
相關標籤/搜索