awk正則匹配

2021-09-24 19:34:41 字數 1739 閱讀 8039

不使用grep單獨使用awk,列印匹配行

ll | awk ' s~/do/'

drwxr-xr-x. 3 jj jj 114 may 17 15:07 documents

drwxr-xr-x. 2 jj jj 6 apr 10 00:14 downloads

如上,ll本輸出當前目錄,使用awk,忽略大小寫,匹配字串,

如果只是單獨這樣,grep完全可以滿足,awk可以做更精細的操作,如輸出空格分隔的第5個引數

ll | awk ' s~/do/ '

1146

不匹配的行做其他輸出,

ll | awk 'begin else} end'

1-no match

2-no match

3-drwxr-xr-x. 3 jj jj 114 may 17 15:07 documents-9-do

4-drwxr-xr-x. 2 jj jj 6 apr 10 00:14 downloads-9-do

5-no match

6-no match

7-no match

8-no match

9-no match

323-hello:163114666666

如果line和count不需要初始化,可以省去初始化操作,;line="hello";count=10

引數初始化還可以使用-v引數

ll | awk -v line="guagua" -v count=11 'begin else} end'

1-no match

2-no match

3-drwxr-xr-x. 3 jj jj 114 may 17 15:07 documents-9-do

4-drwxr-xr-x. 2 jj jj 6 apr 10 00:14 downloads-9-do

5-no match

6-no match

7-no match

8-no match

9-no match

324-guagua163114666666

ofs表示輸出分隔符,其他內建變數可以檢視文件

ignorecase=1表示忽略大小寫,這樣match才能匹配到不區分大小寫的字串

$0表示整行

match表示字串匹配,match第三個引數是array,a[0]表示正規表示式中的匹配,1表示第乙個括號匹配,2表示第二個括號中的匹配,如下o就是第二個括號中的匹配

ll | awk -v line="guagua" -v count=11 'begin else} end'

1-no match

2-drwxr-xr-x. 2 jj jj 163 jun 20 20:40 desktop-9-o

3-drwxr-xr-x. 3 jj jj 114 may 17 15:07 documents-9-o

4-drwxr-xr-x. 2 jj jj 6 apr 10 00:14 downloads-9-o

5-no match

6-no match

7-no match

8-no match

9-drwxr-xr-x. 2 jj jj 6 apr 10 00:14 videos-9-o

324-guagua163114666666

awk匹配整行

如果沒有指定操作,則單個正規表示式將對整行進行模式匹配,並列印出所匹配的行。可以使用元字元 來表示需要進行行首匹配的正規表示式。範例 cat employees tom jones 44245 12 66543354 mary adams 534611 4 6328765 sally chang 1...

awk模式匹配

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

awk匹配案例

收藏一些關於awk常用的案例 awk f etc passwd 列印包含root的行 awk f root etc passwd 匹配root,並列印第一列 awk f 4 100 etc passwd 列印第四列等於100的行 awk f 1 root etc passwd 列印不包含root的行...