国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux文本分析awk基礎命令介紹(8)

2019-10-26 18:50:06
字體:
來源:轉載
供稿:網友

awk是一種模式掃描和處理語言,在對數據進行分析處理時,是十分強大的工具。

awk [options] 'pattern {action}' file...

awk的工作過程是這樣的:按行讀取輸入(標準輸入或文件),對于符合模式pattern的行,執行action。當pattern省略時表示匹配任何字符串;當action省略時表示執行'{print}';它們不可以同時省略。
每一行輸入,對awk來說都是一條記錄(record),awk使用$0來引用當前記錄:

[root@centos7 ~]# head -1 /etc/passwd | awk '{print $0}'root:x:0:0:root:/root:/bin/bash

例子中將命令head -1 /etc/passwd作為awk的輸入,awk省略了pattern,action為print $0,意為打印當前記錄。
對于每條記錄,awk使用分隔符將其分割成列,第一列用$1表示,第二列用$2表示...最后一列用$NF表示

選項-F表示指定分隔符
如輸出文件/etc/passwd第一行第一列(用戶名)和最后一列(登錄shell):

[root@centos7 ~]# head -1 /etc/passwd | awk -F: '{print $1,$NF}'root /bin/bash

當沒有指定分隔符時,使用一到多個blank(空白字符,由空格鍵或TAB鍵產生)作為分隔符。輸出的分隔符默認為空格。
如輸出命令ls -l *的結果中,文件大小和文件名:

[root@centos7 temp]# ls -l * | awk '{print $5,$NF}'13 b.txt58 c.txt12 d.txt0 e.txt0 f.txt24 test.sh[root@centos7 temp]# 

還可以對任意列進行過濾:

[root@centos7 temp]# ls -l *|awk '$5>20 && $NF ~ /txt$/'-rw-r--r-- 1 nobody nobody 58 11月 16 16:34 c.txt

其中$5>20表示第五列的值大于20;&&表示邏輯與;$NF ~ /txt$/中,~表示匹配,符號//內部是正則表達式。這里省略了action,整條awk語句表示打印文件大小大于20字節并且文件名以txt結尾的行。

awk用NR表示行號

[root@centos7 temp]# awk '/^root/ || NR==2' /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin[root@centos7 temp]#

例子中||表示邏輯或,語句表示:輸出文件/etc/passwd中以root開頭的行或者第二行。

在一些情況下,使用awk過濾甚至比使用grep更靈活
如獲得ifconfig的輸出中網卡名及其對應的mtu值

[root@idc-v-71253 ~]# ifconfig|awk '/^/S/{print $1"/t"$NF}'ens32: 1500ens33: 1500lo:   65536[root@idc-v-71253 ~]# #這里的正則表示不以空白字符開頭的行,輸出內容中使用/t進行了格式化。

以上所說的NR、NF等都是awk的內建變量,下面列出部分常用內置變量

$0     當前記錄(這個變量中存放著整個行的內容)$1~$n    當前記錄的第n個字段,字段間由FS分隔FS     輸入字段分隔符 默認是空格或TabNF     當前記錄中的字段個數,就是有多少列NR     行號,從1開始,如果有多個文件話,這個值也不斷累加。FNR     輸入文件行號RS     輸入的記錄分隔符, 默認為換行符OFS     輸出字段分隔符, 默認也是空格ORS     輸出的記錄分隔符,默認為換行符FILENAME  當前輸入文件的名字            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岢岚县| 商都县| 平和县| 东兰县| 高阳县| 大化| 温宿县| 玉溪市| 龙州县| 罗平县| 潼关县| 密山市| 赤峰市| 友谊县| 梁山县| 兰州市| 横峰县| 白山市| 惠州市| 龙口市| 香格里拉县| 嵊州市| 右玉县| 九龙县| 常熟市| 措勤县| 梁山县| 阿图什市| 宾川县| 石狮市| 道孚县| 浦县| 辽阳县| 奉化市| 星子县| 开原市| 鄢陵县| 什邡市| 都江堰市| 佛教| 遵化市|