awk 6 0 awk模式之二

2021-08-25 10:57:15 字數 1109 閱讀 7244

awk的語法

awk [options] 『pattern 』 file1,file2…

之前介紹了三種模式:空模式,關係運算模式,begin/end模式

正則模式

模式可以理解成條件,正則模式就是滿足正規表示式條件的,就執行相應的動作,否則不執行。

如果我們想要找到在/etc/passwd檔案中,以「_krb」開頭的內容該如何找呢

grep

"^_krb" /etc/passwd

同樣的,我們想要使用awk的方式完成這個操作,

awk

'/^_krb/' /etc/passwd

比較一下上面兩種方式,grep將正規表示式放在了雙引號中,awk將正規表示式放在了兩個反斜槓中。

上面示例看上去是grep更加的簡介,但是有一些具體的case的時候,awk顯得更加美觀。awk有格式化輸出的功能。請讀者嘗試著讀下面的使用方式:

注意點:1. 如果在awk的正則中使用了/,這個時候就需要使用轉義字元,假如下面的需求,我們想要從passwd檔案中,找到/bin/bash作為登陸shell的使用者,

awk '\/bin\/bash$/ /etc/passwd'
注意點:2. 如果在正則中,需要使用形如這種型別的表示式的時候,需要使用–posix,或者–re-interval選項

awk --posix '/hey/ test'
行範圍模式

假如有下面的檔案(為了截圖方便,我把檔案和操作放在一起了)

檔案中,hello出現了兩次,world出現了一次,如果我想篩選出,hello第一次出現和world第一次出現中的所有行的內容,就使用上面的方式

總結一下就是,使用兩個正規表示式,匹配所有的行,意思就是從第乙個正則開始,到第二個正則結束匹配所有的行。

行範圍模式另外一種方式,可以使用關係運算模式進行解決,比如列印3-6行的資料。

awk

'nr>=3 && nr<=6 ' test

八,awk動作總結之二

前文中,我們介紹了awk中的條件判斷語句。比如 if 比如 if.else.比如 if.else if.else.我們說過,這些語句都可以歸類為 控制語句 但是這些並不是 控制語句 的全部,今天我們繼續聊聊awk的 控制語句 今天的話題主要與 迴圈 有關,說到 迴圈 你一定會想起 for while...

awk模式匹配

在這篇文章中,我們將看到許多小的,甚至沒有什麼意義的例子,但他們能夠驗證awk程式指令碼的主要 特點。當awk讀入一行時,它試圖匹配指令碼中的每個模式匹配規則。只有與乙個特定的模式相匹配的輸入行才能成為操作物件。如果沒有指定操作,與模式相匹配的輸入行將被列印出來 執行列印語句是乙個預設操作 參閱下面...

awk 模式匹配

使用awk作為文字處理工具,正規表示式是少不了的。要掌握這個工具的正規表示式使用。其實,我們不必單獨去學習它的正規表示式。正規表示式就像一門程式語言,有自己語法規則已經表示意思。對於不同工具,其實大部分表示意思相同的。在linux眾多文字處理工具 awk,sed,grep,perl 裡面用到正規表示...