awk用法二

  3、awk的printf命令

    格式:printf format, item1 item2…

    要點:

     (1) 要指定format;

     (2) 輸出時不會自動換行,如需換行則需要給出\n;

     (3) format用于為后面的每個item指定其輸出格式;

     (4) format格式的指示符都是%開頭,后跟一個字符。

    format常用的字符:

     %c:顯示字符的ASCII碼

     %d,%i:十進制整數;

     %e,%E:科學計數法;

     %f:顯示浮點數;

     %g,%G:以科學計數法格式或浮點數格式顯示數值;

     %s:顯示字符串;

     %u:顯示無符號整數;

     %%:顯示%自身。

    format中常用修飾符:

    #:顯示寬度;

    -:左對齊;

    +:顯示數值的符號;

     .#:取值精度。

    實例1:以固定寬度20輸出/etc/passwd文件中前10條記錄的用戶名和shell信息:

1.jpg

    上例中標注的部分含義為:兩個字段都是以20個字符的寬度來顯示,并且以換行符為每行的結束符。

   實例2:將上例中的用戶名以左對齊顯示:

2.jpg

   實例3:將3.14159取2位小數顯示:

3.jpg

  4、awk的操作符

    算術操作符:

      x+y:加

      x-y:減 

      x*y:乘

      x/y:除

      x**(^)y:乘方

      x%y:取模

      -x:負值

      +x:轉換為數值

    字符串操作符:

      連接:無需符號,直接將兩個字符串放在一起就可以了;

    賦值操作符:

      x=y:將y的值賦值給x;

      x+=y:將x+y的結果賦值給x;

      x-=y:將x-y的結果賦值給x;

      x/=y:將x除以y的結果賦值給x;

      x%=y:將x與y取模的結果賦值給x;

      x^=y或x**=y:將x取y次方的結果賦值給x;

      x++:將x+1的結果賦值給x;

      x–:將x+1的結果賦值給x;

    注:如果模式自身是=號,要寫為/=/

    比較操作符:

      x<y:如果x小于y則為真;

      x<=y:如果x小于等于y則為真;

      x>y:如果x大于y則為真;

      x>=y:如果x大于等于y則為真;

      x==y:如果x等于y則為真;

      x~y:模式匹配,x能夠被y模式所匹配為真。

    邏輯操作符:

      x&&y:如果x為真則執行y;

      x||y:如果x為假則執行y。

    條件表達式:

      selector ?if-ture-expression: if-false-expression

        selector:條件

        ?if-ture-expression:如果為真則執行此表達式

        :if-false-expression:否則執行此表達式

    實例4:判斷/etc/passwd文件中uid大于500則顯示為"Common user",否則顯示為“admin user":

4.jpg

  5、模式

    (1)正則表達式

      格式:/PATTERN/

      實例5:只顯示/etc/passwd文件中存在root的行:

5.jpg

    (2)表達式

      以比較表達式居多,其結果為非0或非空字符串時滿足條件,awk僅處理滿足條件的行。

      實例6:只顯示uid大于等于500的行:

6.jpg

    (3)特殊模式

      BEGIN:在awk命令的program運行之前執行一次;

     END:在awk命令的program運行之后執行一次。

     實例6:顯示/etc/passwd文件中以root開頭的行的用戶名在人、UID、shell信息,顯示時以逗號分隔各字段,并在輸出結果后打印“THE END”。

7.jpg

    (5)空模式

      用于匹配任意行。

8.jpg

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10460

(0)
petmasterpetmaster
上一篇 2015-12-24
下一篇 2015-12-28

相關推薦

  • 文件共享服務之NFS

    文件共享服務之NFS 文件共享服務之NFS 一、什么是NFS及NFS的工作流程 二、NFS發展及問題 三、NFS簡單部署 一、什么是NFS及NFS的工作流程 NFS(Network File System,網絡文件系統)  NFS是借助于RPC來實現功能的 RPC:(Remote  Procedure  Call  p…

    Linux干貨 2016-04-19
  • 用一條命令’pwd’判斷并證明系統命令的執行順序。

    一、命令分類        在Linux系統中命令分為兩類:            1.內部命令:shell buildin 每次啟動系統都會重新加載入內存。        2.外部命令:即某目錄下的…

    Linux干貨 2017-09-03
  • Ansible應用介紹

    Ansible 簡介 ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。這個工具的目標有這么幾項:自動化部署APP;自動化管理配置項;自動化的持續交互;自動化的(AWS)云服務管理。所有的這幾個目標從本質上來說都是在一個臺或者幾臺服務器上,執行一系列的命令而已。通俗的說…

    Linux干貨 2015-07-03
  • 網絡這塊一些有趣的感想

    還記的那天老師讓我們做兩臺主機的nexthop就是自己的ip地址,然后互相ping測試能否互相聯通的實驗,昨晚之后我就在想能不能進行一些改進,因為在我看來這種級別的互相ping的前面一個網絡段相同太沒意思了。 接著我就嘗試了幾種IP地址 主機A 主機B 192.0.0.1 192.1.0.1 192.1.1.1 192.2.2.2 192.2.1.1 192…

    Linux干貨 2016-09-13
  • Linux學習練習及作業&day07-正則表達式&文本處理工具

    第一部分、使用基本的文本處理工具(非grep)練習以下5題。 1、找出ifconfig命令結果中本機的所有IPv4地址     [root@localhost ~]# ifconfig |head -2 |tail -1     …

    Linux干貨 2016-08-08
  • shell進階之循環

    循環執行,將某代碼段重復運行多次

    重復運行多少次:

    循環次數事先已知

    循環次數事先未知

    有進入條件和退出條件

    for, while, until

    Linux干貨 2017-12-24
欧美性久久久久