awk的簡單使用方法

一、簡介

二、語法

三、action:執行動作

四、選項

五、內置變量NF

 

一、簡介

    awk常用於分析數據生成報表,它將文件逐行讀入,使用分隔符將數據分段後,進行處理。awk其名稱得自於它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母,Linux中的awk通常說的是gawk。

   

二、語法

awk [options] ‘/pattern/{action}’/path/to/file

 

地址定界/pattern/:

    pattern1,pattren2:指定的行

    /pattern/:可以僅僅是模式匹配的行

    expression:可以表達式

[root@TESTHOST ~]# awk -F: '$3>500{print $1,$3,$7}' /etc/passwd    #分段後,用表達式比較第3段uid的值,
student 501 /bin/bash

    BEGIN:在處理任意行之前進行的操作

[root@TESTHOST ~]# awk -F: 'BEGIN{print "username uid shell"}$3>500{print $1,$3,$7}' /etc/passwd    #此處意爲在處理數據前,在行首先打印標題內容 
username uid shell
student 501 /bin/bash
You have new mail in /var/spool/mail/root

    END:行數據處理完後進行收尾操作

[root@TESTHOST ~]# awk -F: '$3>500{print $1,$3,$7}END{print "username uid shell"}' /etc/passwd    #此處意爲行數據處理完後,在末行打印標題內容
student 501 /bin/bash
username uid shell

 

三、action:執行動作

    print:打印內容到屏幕

    printf:按照格式打印內容到屏幕

 

四、選項

    -F:指定分隔符

[root@TESTHOST ~]# awk -F: '/bash/{print $1,$3,$7}' /etc/passwd    #匹配內容中有“bash”的行,以分隔符“:”分段,打印第1、第3、第7段內容
root 0 /bin/bash
mockbuild 500 /bin/bash
student 501 /bin/bash

 

五、內置變量NF

    NF:Number of Filed,段數

    $NF:最後一列

[root@TESTHOST init.d]# echo $PWD    #此路徑由3個分號分隔成4段內容
/etc/rc.d/init.d
[root@TESTHOST init.d]# echo $PWD | awk -F/ '{print $1}'   #從結果看出第一段爲分號前內容

[root@TESTHOST init.d]# echo $PWD | awk -F/ '{print $NF}'    #$NF表示最後一段
init.d
[root@TESTHOST init.d]# echo $PWD | awk -F/ '{print NF}'    #NF表示分隔的段數
4
[root@TESTHOST init.d]#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章