awk詳解

awk.png

——————————

課外練習

只處理用戶ID為奇數的行,并打印用戶名和ID號

[root@localhost ~]# awk -F: '{if($3%2!=0) {print $1,$3}}' /etc/passwd

顯示系統的普通用戶,并打印用戶及ID

[root@localhost ~]# awk -F: '{if($3>=500) {print $1,$3}}' /etc/passwd

顯示系統用戶是“/bin/bash"的用戶,并打印用戶名

[root@localhost ~]# awk -F: '/\/bin\/bash$/{print $1}' /etc/passwd

統計普通用戶的個數

[root@localhost ~]# awk -F: -v i=0 '{if($3>=500) {i++}}END{print i}' /etc/passwd

統計文本的總行數

[root@localhost ~]# awk -v i=0 '{i++}END{print i}' /etc/passwd

利用awk顯示文件名

[root@localhost ~]# awk 'END{print FILENAME}' /etc/passwd

格式化輸出統計數據

[root@localhost ~]# awk -F: '{printf "UID: %-5s  NAME: %3s\n",$3,$1}' /etc/passwd

只顯示ID為1000的用戶的相關信息

[root@localhost ~]# awk -F: '{if($3==1000) {print $0}}' /etc/passwd

查找“root”關鍵字的行

[root@localhost ~]# awk '/root/{print $0}' /etc/passwd

利用awk模擬tail -1 的效果

[root@localhost ~]# awk 'END{print $0}' /etc/passwd

打印一個表頭,并且打印用戶名和ID

[root@localhost ~]# awk -F: 'BEGIN{printf "USERNAME      UID\n------------------\n"}{printf "%-10s %5s\n",$1,$3}' /etc/passwd

打印一個表頭和表尾,并打印用戶名,ID,及shell

[root@localhost ~]# awk -F: 'BEGIN{printf "USERNAME         UID  SHELL\n"}{printf "%-13s %5s %-s\n",$1,$3,$7}END{printf "USERNAME         UID  SHELL\n"}' /etc/passwd

對文本中的字段進行字符個數統計

[root@localhost ~]# awk '{for(i=1;i<=NF;i++) {count[$i]++}}END{for(k in count) {print k,count[k]}}' /etc/fstab

打印字符個數大于等于8的字段

[root@localhost ~]# awk '{if(NF>8) {print $0}}' /etc/fstab

統計系統中shell的類型,并打印shell引用的次數

[root@localhost ~]# awk -F: '{count[$7]++}END{for(i in count) {print i,count[i]}}' /etc/passwd

統計fstab文件中,各文件系統被引用的次數

[root@localhost ~]# awk '/^[^#]/{filesystem[$3]++}END{for(i in filesystem) {print i,filesystem[i]}}' /etc/fstab

統計系統中各TCP連接狀態的數量

[root@localhost ~]# netstat -tan | awk '/^tcp/{split($5,ip,":");if(ip[1]=="")next;count[ip[1]]++}END{for(i in count) {print i,count[i]}}'

統計web站點的用戶訪問次數

[root@localhost ~]# awk '/^[^#]/{filesystem[$3]++}END{for(i in filesystem) {print i,filesystem[i]}}' /etc/fstab

統計正與系統建立連接的IP地址(ESTABLISHED),并統計建立連接的連接數量

[root@localhost ~]# ss -tan | awk '/^ESTAB/{split($5,ip,":");state[ip[1]]++}END{for(i in state) {print i,state[i]}}'

將文本的重復行去掉

[root@localhost ~]# awk '!a[$0]++' test.txt

原創文章,作者:M20-1--孔祥文,如若轉載,請注明出處:http://www.www58058.com/49081

(0)
M20-1--孔祥文M20-1--孔祥文
上一篇 2016-09-25
下一篇 2016-09-25

相關推薦

  • 實驗:路由、bonding、team

    實驗:路由實驗 路由表構成目標網絡:網絡ID 子網掩碼接口:到達目標網絡,從哪個接口出來,此接口網關:gateway,下一個鄰近路由器的鄰近接口的IP地址,如果目標網絡和本路由器直接,網關的地址為接口的IP centos6 關閉NetworkManager服務chkconfig NetworkManagerservice NetworkManager sto…

    Linux干貨 2017-05-06
  • Linux自動備份腳本

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1541163        今天網上一個朋友問了我一個shell的題目,讓我幫他做下。下面是題目以及解題思路。 題目:…

    Linux干貨 2016-08-15
  • N25 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 2、編輯/etc/group文件,添加組hadoop。 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop。 4、復制/etc/sk…

    Linux干貨 2017-01-04
  • 如何恢復誤刪除的rpm包命令

    如何恢復誤刪除的rpm包命令 在linux學習過程中,我們會遇到各種各樣的問題,當然,如果能夠將遇到的問題一一解決也是非常開心的,因為在解決問題的過程中我們的專業技能也得到了很大的提升。最近的測試中遇到了一個平時很少接觸的問題:如何恢復誤刪除的rpm包命令。所以覺得有必要寫下來,以防止下次出現類似的問題而不會解決。 首先模擬卸載rpm rpm -e &#82…

    2017-08-26
  • Linux文本三劍客之grep

    一、定義:                 GREP  :Global search REgular expression and Print out the line的縮寫。是一種強大的文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;并把匹配的行打印出…

    Linux干貨 2016-04-05
  • Linux sed命令詳則

    sed命令 sed是一種流編輯器,它是文本處理中非常好的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前的行儲存在臨時緩存區中,稱為“模式空間”(pattern space),接著用sed命令處理緩存區中的內容,處理完成后,把緩存區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed…

    2017-08-11

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-26 09:49

    圖畫的不錯,贊一個,awk是一個很方便的文本格式化工具,這也是以后面試題必會遇到的面試題,希望下來多加練習,熟練掌握,

欧美性久久久久