awk命令基本使用(1)

2021-09-02 14:05:16 字數 4414 閱讀 1534

1、通過man awk可知它的詳情

awk 是一種程式語言,awk有很多內建的功能,比如陣列、函式等.....

例項1通過awk得到ip

[root@localhost ~]# ifconfig

em1       link encap:ethernet  hwaddr 14:18:77:70:62:20  

inet addr:10.12.50.78  bcast:10.12.50.255  mask:255.255.255.0

inet6 addr: fe80::1618:77ff:fe70:6220/64 scope:link

up broadcast running multicast  mtu:1500  metric:1

rx packets:5893345 errors:0 dropped:0 overruns:0 frame:0

tx packets:165708 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000 

rx bytes:886835464 (845.7 mib)  tx bytes:160953846 (153.4 mib)

interrupt:41 

[root@localhost ~]#ifconfig em1|awk -f '[ :]+' 'nr==2 '

10.12.50.78

[root@localhost ~]#

awk相關解釋: -f 是指定分隔符;'[ :]+ ' 代表正則;中括號內的是要匹配的內容;『+』代表匹配連續多個。例子中代表匹配多個空格及「:"作為分隔符;nr 是awk的內建變數代表行 $4 代表第4列;print 是輸出;

inet    addr:10.12.50.78  

第1列   第2列  第3列   第4列

(1、2,3列是以空格為分隔符) (3,4是以「 : 」 分隔符)

注意:awk 後跟的語句必須用單引號包含

[root@localhost ~]# ifconfig em2|awk -f "[ :]+"'nr==2 '  

10.11.45.90

[root@localhost ~]# ifconfig em2|awk -f "[ :]+" "nr==2 "

inet addr:10.12.50.78  bcast:10.12.50.255  mask:255.255.255.0

例項2通過awk得到行號,得到列

[root@localhost ~]#awk  '' /etc/passwd

1 root:x:0:0:root:/root:/bin/bash

2 bin:x:1:1:bin:/bin:/sbin/nologin

3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@localhost ~]#

[root@localhost ~]#awk  -f ":" '' /etc/passwd

/root:/bin/bash

/bin:/sbin/nologin

/sbin:/sbin/nologin

/var/adm:/sbin/nologin

/var/spool/lpd:/sbin/nologin

/sbin:/bin/sync

/sbin:/sbin/shutdown

例項3通過awk 取出5到8行的內容

[root@localhost ~]#awk  '' /etc/passwd

5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6 sync:x:5:0:sync:/sbin:/bin/sync

7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8 halt:x:7:0:halt:/sbin:/sbin/halt

[root@localhost ~]# 

例項4通過awk過濾空格或#

原資料[root@localhost ~]#cat awke

處理後的資料

例項相關解釋 '/^[^#]/';

紅的^排除裡的內容;中括號內的橙黃色^是以空格開頭

例項5awk計算記憶體佔用率

[root@localhost ~]# free -m

total       used       free     shared    buffers     cached

mem:         31994       3593      28401          0        175       1175

-/+ buffers/cache:       2242      29751

swap:        16063          0      16063

[root@localhost ~]# memused=$(free -m|egrep "mem"|awk '')                     

[root@localhost ~]# memtotal=$(free -m|egrep "mem"|awk '')                    

[root@localhost ~]# memusage=$(awk 'begin')

[root@localhost ~]# echo  $memusage

11[root@localhost ~]# 

[root@localhost ~]# memusage=$(awk 'begin')    

[root@localhost ~]# echo  $memusage

0.11

awk 'begin'

printf

%f                                     浮點型 #使用小數點後2位%.2f (用於除法後)

begin與end的作用是給程式賦予初始狀態和程式結束後執行掃尾的工作;任何在begi 之後列出的操作({}內)awk開始掃瞄輸入之前執行,end掃瞄全部的輸入之前執行結束之後執行。通常使用bein來顯示變數和初始化變數,使用end來輸出最後的結果。

[root@localhost  ]# awk 'begin'   不需要跟檔案

1 abc

2 efg

[root@localhost ]# 

[root@localhost ~]# echo qw> /home/a.log 

[root@localhost ~]# awk 'end' /home/a.log ##後跟任意檔案才能輸出結果

1 abc

2 efg

awk命令基本用法

本文出自 我是幹勾魚的部落格 顯示磁碟使用情況 df h awk 這裡注意,awk工作流程是這樣的 讀取含有 n 換行符分割的一條記錄,然後將記錄按指定的域分隔符來劃分域,填充域。比如說統計file all.txt檔案內容的行數 awk end userinfo.csv在這裡,管道前列印所有行號,管...

awk命令使用

awk是linux下很有用的列編輯工具。示例如下 檔案tran map.txt內容如下 tr zhuanzhang sa unknown 1.組織字串。將第一列以字串形式列印出來 awk tran map.txt tr sa 2.形成格式化 將第一列值轉換為第二列值 採用檔案指令碼方式。指令碼檔案為...

awk命令使用

linux awk command info awk是乙個行編輯器 和sed是互補關係 主要功能是擷取,它類似於cut的功能,但是功能更強大 不單可以擷取還可以運算 排序 還支援shell語句等一些功能 awk語法 awk option filename awk 認為每一行都是一條記錄,記錄與記錄的...