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 14:53
下一篇 2016-09-25 16:46

相關推薦

  • keepalived高可用lvs集群

    實驗拓撲   keepalived高可用配置 HA01和HA02的keepalived安裝及配置(安裝及配置均相同) ~]# yum -y install keepalived HA01和HA02做時間同步,crontab中添加時間同步腳本 ~]# date; ssh 192.168.150.140 'date'   …

    Linux干貨 2016-12-06
  • vrrp_script高可用httpd&雙主httpd

      vrrp_script高可用httpd 實驗拓撲: HA01 192.168.150.137     MASTER HA02 192.168.150.137     BACKUP VIP 1921.168.150.131 實驗1: 通過touch一個文件來控制keepalived主機的優先級 HA01的配…

    Linux干貨 2016-12-06
  • bash編程函數select語句的使用

    £select             select循環主要用于創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,并顯示PS3提示符,等待用戶的輸入,用戶輸入菜單列表中的某個數字,執行相應的命令,用戶輸入被保存在變量REPLY中。 select是個…

    Linux干貨 2016-08-24
  • vsftpd基于mysql進行虛擬用戶管理

    概述:     FTP是我們日常工作中經常用到的一個服務,但是FTP對用戶的管理卻比較薄弱,默認狀態下,FTP利用pam機制進行賬號管理,默認情況下使用的是系統賬號,如何提升FTP對用戶管理的有效性,針對不同的用戶設定不同的上傳權限,這就要基于虛擬賬號來管理了,本篇就介紹下在vsftpd利用pam機制,結合mysql實…

    Linux干貨 2016-10-18
  • DNS快速入門、正反向解析……

    DNS服務原理詳解 因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析。 我們在訪問一個網站的時候,只要輸入該網站的網址就會跳轉到該網站頁面,而實現這一過程就需要DNS服務器將域名解析為IP地址,進而實現數據通信。 DNS:…

    2017-06-03
  • N25_第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; 2、寫一個腳本     (1) 獲取當前主機的主機名,保存于hostname變量中;     (2) 判斷此變量的值是否為localhost,如果是…

    Linux干貨 2017-02-02

評論列表(1條)

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

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

欧美性久久久久