linux三劍客之awk,linux必學的強大工具!

2021-12-24 吾非同

收錄於話題 #linux 5個

 Linux 文本處理三劍客grep、sed、awk,這三個命令在工作和面試過程中出現的頻率非常高,有時候很複雜的需求,一條簡單的命令就可以實現,今天就先學習一下最強大的awk。awk的概念及作用「

awk命名源自於它的三大作者名字的首字母,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。awk是一個強大的文本分析工具,相當於grep的查找和sed的編輯功能,根據分隔符對每行數據切片,切開的部分在進行各種分析處理,處理的數據可以來自標準輸入、一個或多個文件,或其它命令的輸出。常用作腳本使用。

」AWK語法
awk [options] 'BEGIN{ print "start" } 『pattern{ commands }』 END{ print "end" }' file

BEGIN、END是AWK的關鍵字部,因此必須大寫,屬於可選部分。BEGIN命令快是處理每行數據之前執行的操作。END命令是處理完每行數據之後執行的操作,常用於列印輸出統計結果等。

awk [options] 'pattern{action}' {filenames}

pattern:匹配模式,表示AWK在數據中查找的內容

awk匹配模式pattern參數

awk常用參數

awk命令中常用的內置變量

$n:比如$1 $2 $3,取第幾列信息

NF:瀏覽記錄的域的個數, 根據分隔符分割後的列數OFS:輸出列分隔符,用於列印時分割欄位,默認為空格ORS:輸出行分隔符,用於列印時分割記錄,默認為換行符awk流程控制
{if(表達式){語句;語句;...}}

{if(表達式){語句;語句;...}else{語句;語句;...}}

{if(表達式){語句;語句;...}else if(表達式){語句;語句;...}else if(表達式){語句;語句;...}else{語句;語句;...}}

學習案例:

使用系統passwd文件進行演示

1.列印第一列

awk  -F ':'  '{print $1}' /etc/passwd

2.列印第二行的內容

awk -F ':' 'NR==2{print $0}' /etc/passwd

3.列印第5行到第10行的第1列

awk -F: '{if(NR>=5 && NR<=10) print $1}' /etc/passwd

4.指定多個分隔符

echo "abc:def/linux" | awk -F '[:/]' '{print $1","$2","$3}'

5.統計passwd文件每行的行號、列數、行內容

awk  -F ':'  '{print "行號:" NR ",列數:" NF ",行內容:"$0}' /etc/passwd

6.列印以mysql開頭的行

awk '/^mysql/'  /etc/passwd

7.過濾IP

ifconfig | awk '/broadcast/{print}' | awk -F " " '{print $2}'

8.統計/etc/passwd下的帳戶數

awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd

9.列印字符串長度大於3的單詞

echo "I am a teacher" |awk '{for(i=1;i<=NF;i++) if(length($i)>3) print $i}'

相關焦點

  • Linux 三劍客 Awk、Sed、Grep 命令詳解
    awk有很多內建的功能,比如數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優勢。~ 匹配或不匹配的條件語句x{m} x字符重複m次x{m,} x字符至少重複m次X{m,n} x字符至少重複m次但不起過n次(需指定參數-posix或--re-interval)Linux三劍客Sed命令詳解命令名稱Sed 一個強大的流式文本編輯器
  • 面試題linux命令之awk
    無論是在測試還是開發崗位的面試招聘中,都會被提問到:是否了解linux系統,經常使用linux命令有哪些,接著可能會出一道題目,找出下列文本中的哪些值
  • 【Linux】常用命令之 awk 常用實例
    awk命令工具在Linux/UNIX系統中,awk是一個功能強大的編輯工具,逐行讀取輸入文本,
  • Linux常用命令 awk 入門基礎教程
    在Linux/UNIX系統中,awk是一個功能強大的編輯工具,逐行讀取輸入文本,並根據指定的匹配模式進行查找,對符合條件的內容進行格式化輸出或者過濾處理
  • 性能工具之linux常見日誌統計分析命令
    引言在上文中性能工具之linux三劍客awk、grep、sed詳解,我們已經詳細介紹 linux
  • 簡單輕鬆學 Linux 之 awk
    不過 awk 還有比 sed 更強大的匹配,如下所示:# awk -F ':' '$1 ~/oo/' test.txtroot:x:0:0:root:/root:/bin/bashsetroubleshoot:x:992:990::/var/lib/setroubleshoot:/sbin/nologin它可以讓某個段去匹配,這裡的~就是匹配的意思。
  • Linux 三劍客之 awk 詳解
    (給Linux愛好者加星標,提升Linux技能)以下文章來源於宜信技術學院 ,作者秦偉第一篇 awk簡介與表達式實例
  • Linux shell腳本編程入門系列七:linux三劍客之awk
    1、awk是什麼?awk命令的作用是進行文本掃描、處理以及報表的生成。awk命令有自己的語法規則,官方說法叫「樣式掃描和處理語言」,其語法借鑑了C語言的精華。由於其強大的文本分析能力與格式化輸出能力,awk命令成為Linux環境開發者的必備殺器,與grep命令、sed命令一起被稱為Linux三劍客。熟練運用awk命令能讓我們的日常工作變得高端同時也高效起來。2、awk的基本使用awk對文本的掃描是以行為單位的,也就是說awk一次從文本中讀取一行的內容。
  • 詳解Linux常見的幾種awk處理文字數據用法
    詳解Linux常見的幾種awk處理文字數據用法 awk是linux上文字處理的一款工具,具有強大的欄位截取功能,今天主要介紹幾個例子,幫助大家掌握一下怎麼利用awk來進行文字數據的處理。
  • Linux 三劍客之 awk 實戰詳解教程
    在前邊已經講過 grep 和 sed,沒看過的同學可以直接點擊閱讀,今天要分享的是更為強大的 awk。sed 可以實現非交互式的字符串替換,grep 能夠實現有效的過濾功能。與兩者相比,awk 是一款強大的文本分析工具,在對數據分析並生成報告時,顯得尤為強悍。awk 強大的功能,是一般 Linux 命令無法比擬的。
  • awk一個linux系統的中的好教官
    而awk教官可以很方便幫我們處理好存放在日誌中的士兵,可以幫助我們選出最高的士兵,可以幫助我們選出經常出操的士兵,可以幫我們選出哪些士兵經常在一起。看下面的一個需求:我們需要看看經常訪問網站的有哪些ip,並且把它們的訪問次數統計出來。
  • 史上最全的 Linux Shell 文本處理工具集錦,快收藏!
    :find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;對shell腳本使用的原則是命令單行書寫,儘量不要超過2行;如果有更為複雜的任務需求,還是考慮python吧;我把 linux 相關的文章整理成了 PDF,關注公眾號 Java後端 並回復 666 下載。
  • Linux awk命令入門詳解
    簡介awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大
  • 搞定Linux Shell文本處理工具,看完這篇集錦就夠了
    下面我介紹Linux下使用Shell處理文本時最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和參數都是最常用和最為實用的;我對shell腳本使用的原則是命令單行書寫,儘量不要超過2行;如果有更為複雜的任務需求,還是考慮python吧;1、find
  • Linux系統運維工程師入門絕招放送
    我就稀裡糊塗的,這樣報著必死的決心,考下RHCE認證,走上了Linux運維的道路,成為了一名linux運維工程師。有些心得跟大家分享下,避免小白多走冤路。Linux運維必須要掌握的工具,我列出這幾方面,這樣的話入門就基本沒問題。
  • Linux 上 12 個高效的文本過濾命令
    譯者: yangmingming在這篇文章中,我們將會看一些 Linux 中的過濾器命令行工具。因此,它可以用來以強大的方式處理信息,例如重新結構化輸出以生成有用的報告,修改文件裡面的文本,以及其他很多系統管理任務。下面是 Linux 上的一些有用的文件或者文本過濾器。1、 awk 命令awk[1] 是一個卓越的模式掃描和處理語言,它可被用於在 Linux 下構造有用的過濾器。
  • Linux shell awk 流程控制語句(if,for,while,do)詳細介紹
    在linux awk的 while、do-while和for語句中允許使用break,continue語句來控制流程走向,也允許使用exit這樣的語句來退出
  • awk 系列:awk 怎麼讀取標準輸入(STDIN)
    在 awk 系列的第七節中,我們將會看到幾個例子,你可以篩選其他命令的輸出代替從一個文件讀取輸入作為 awk 的輸入。我們首先從使用 dir 命令[1]開始,它類似於 ls 命令[2],在第一個例子下面,我們使用 dir -l 命令的輸出作為 awk 命令的輸入,這樣就可以列印出文件擁有者的用戶名,所屬組組名以及在當前路徑下他/她擁有的文件。
  • linux文本截取與處理之cut
    前面說了awk和sed,自然少不了要說說cut
  • 海量數據處理之cut、awk、sed命令詳解,數據分析必備技能,不難
    :' -f 1-3/etc/passwd例3:以 ':' 為分隔符,截取出/etc/passwd的第二列到最後一列cut -d ':' -f 2- /etc/passwd例4:截取/etc/passwd文件從第二個字符到第九個字符cut -c 2-9 /etc/passwd例5:比如領導想叫你截取linux