【案例】Linux三劍客中awk命令如何使用?

老男孩IT教育機構發表於2022-11-28

  說起Linux系統,相比大家一定聽過Linux三劍客,它們是grep、sed、awk命令, awk是一個強大的文字分析工具,簡單來說awk就是把檔案逐行讀入,今天主要跟大家詳細說明下awk,以下是詳細的內容:

  awk是一個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在對資料分析並生成報告時,顯得尤為強大。

  簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。

  awk有三個不同的版本:awk、nawk和gawk,未作特別說明,一般指gawk,gawk是awk的GNU版本。

  之所以叫awk是因為其取了三位創始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family Name的首字元。

  awk格式:

  格式: sed -n '3p' sed.txt

  找誰幹啥(條件動作)

  awk格式

  #取出/etc/passwd 第1行的第1列和第3列

  awk -F: 'NR==1{print $1.$3}' /etc/passwd

  awk 選項 '條件{動作}' /etc/passwd

  條件: 哪一行,過濾什麼內容

  動作: print輸出與顯示 ,計算....

  awk取行:與sed類似

  案例01:取出sed.txt的第2行

  [root@oldboy81-golden-lnb /oldboy]# cat sed.txt

  101.oldgirl,CEO

  102.zhangya,CTO

  103.lidao007.COO

  104.yy,CFO

  105.feixue,CIO

  110.lidao,COCO

  [root@oldboy81-golden-lnb /oldboy]# awk 'NR==2' sed.txt

  102.zhangya,CTO

  #awk '行號 等於 2' sed.txt

  #NR awk內建變數

  Number of Record 記錄號(行號)

  案例02:取出sed.txt中包含oldboy或lidao的行

  [root@oldboy81-golden-lnb /oldboy]# sed -rn '/oldboy|lidao/p' sed.txt

  103.lidao007.COO

  110.lidao,COCO

  [root@oldboy81-golden-lnb /oldboy]# awk '/oldboy|lidao/' sed.txt

  103.lidao007.COO

  110.lidao,COCO

  案例03:取出檔案第2行到第5行內容

  #awk '行號大於等於2 並且 行號小於等於5' sed.txt

  #方法01

  awk 'NR>=2 && NR<=5' sed.txt #必會

  && 表示並且.

  #方法02

  sed -n '2.5p' sed.txt

  #方法03 瞭解

  awk 'NR==2.NR==5' sed.txt #從行號是2的行開始 到 行號是5的行結束( 瞭解)

  案例04:取出檔案第3行到最後一行內容

  [root@oldboy81-golden-lnb /oldboy]# awk 'NR >= 3' sed.txt

  103.lidao007.COO

  104.yy,CFO

  105.feixue,CIO

  110.lidao,COCO

  [root@oldboy81-golden-lnb /oldboy]# sed -n '3.$p' sed.txt

  103.lidao007.COO

  104.yy,CFO

  105.feixue,CIO

  110.lidao,COCO

  案例05:取出從包含oldboy的行到lidao的行

  [root@oldboy81-golden-lnb /oldboy]# cat sed.txt

  101.oldgirl,CEO

  102.zhangya,CTO

  103.lidao007.COO

  104.yy,CFO

  105.feixue,CIO

  110.lidao,COCO

  root@oldboy81-golden-lnb /oldboy]# sed -n '/old/,/lidao/p' sed.txt

  101.oldgirl,CEO

  102.zhangya,CTO

  103.lidao007.COO

  [root@oldboy81-golden-lnb /oldboy]# awk '/old/ , /lidao/' sed.txt

  101.oldgirl,CEO

  102.zhangya,CTO

  103.lidao007.COO


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2925523/,如需轉載,請註明出處,否則將追究法律責任。

相關文章