不使用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的行...