日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

awk 匹配_linux的awk命令详解,通俗易懂

發布時間:2025/3/15 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 awk 匹配_linux的awk命令详解,通俗易懂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? awk提供了極其強大的功能:可以進行正則表達式的匹配、樣式裝入、流控制、數字運算符、進程控制語句甚至于內置的變量和函數。

簡單地說,awk就是一種用于處理文本的編輯語言工具,它掃描文件中的每一行,查找與命令行中所給定內容相匹配的模式,如果發現匹配內容,則進行下一個編程步驟。如果找不到匹配內容,則繼續處理下一行。

@ubuntu:~$awk ' 條件1 {動作1} 條件2 {動作2} ...' file

示例如下:

@ubuntu:~$awk ' i==1 {print $0 } i==2 {print $1} ' file

以上命令的執行邏輯是:awk從file中讀取數據,每次讀取一行,讀到一行數據之后判斷每一個條件是否成立,如果成立則執行花括號里面的動作,如i==1成立則執行print $0,再判斷i==5是否成立來決定是否執行print$1。然后讀取下一行,以此類推。如果一個動作前面沒有條件,則這個動作就可以“無條件”執行。

為了更好理解,建一個簡單的文檔file來執行一遍:

(1)打印指定列

@ubuntu:~$awk ' { print $1, $2} ' file

注意,其中單引號中大括號內就是awk語句,只能被單引號包含。$1表示第一列,$2表示第二列,$n表示第n列。而$0表示整一行(即一行中的所有列)

(2)格式化輸出(和C語言差不多)

@ubuntu:~$awk?'?{?printf?" %-10s:%-d\n",?$1,?$2?}?'?file

(3)過濾(條件選擇)

@ubuntu:~$awk ' { $3==8 && $4 ==9 } { print $0 } 'file

其含義是讀取file中的一行信息,判斷第3列是否等于8而且第4列是否等于9,如果是,則打印該一行,然后再讀取下一行。

(4)打印表頭,引入內建變量a

@ubuntu:~$awk ' { a==1 || $3==8 } {print } 'file

注意:

1、a是一個所謂的內建變量,表示已經讀出的記錄數(即行號);

2、print后面什么都沒有,默認表示print $0。

(5)指定分隔符

@ubuntu:~$awk ' BEGIN { FS=":" } {print $1}' /etc/passwd

注意:BEGIN意味著緊跟在它后面的動作{FS=":"}會在awk讀取第一行之前處理。

上面的語句等價于

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

如果有多個分隔符,則可以寫成

@ubuntu:~$awk -F ' [\t; : ]' ' {print $1}' /etc/paswd

其中,-F '[\t;:]'的意思是指定制表符、分號以及冒號為分隔符

(6)使用正則表達式匹配字符串

@ubuntu:~$awk ' $0~/bria/ {print} ' file

其含義是將所有匹配bria的行打印出來。其中,$0~/bria/是一個條件,表示所指定的域(這里是$0)要匹配的規則(這里是bria),簡單說,file中有一行只要含有單詞ria,就會被選出來然后打印,同時要注意,這里的單詞bria被寫在兩個“/”之間,事實上這兩個“/”之間寫的就是“正則表達式”。正則表達式就是一些約定的規則,用這些規則來匹配字符串,從而達到過濾文本信息的目的,也就是使用各種字符和符號,來選出我們想要的信息。

(7)使用模式取反的例子

@ubuntu:~$awk?'?$0~/bria.*/??{print}?'?file

?含義:將所有不匹配bria的行打印出來。

(8)將A項(A列)的信息分別存放在各個文件中

@ubuntu:~$awk?'?{print?>?$1 }?'?file其含義就是每一行都將被重定向到比第一個域(A)命名的文件中去。也可以將指定的域重定位到相應的文件,例如:@ubuntu:~$awk?'?{print?$2, $6 >?$1?}?'?file其含義是將每一行中的B,C重定位到與其A相應的文件中去!(9)統計各個級別的數量@ubuntu:~$awk?'?NR!=?{a[$4]++}?'>?END{for(i?in?a)?print?i?","?a[i];}' file其含義是$4是級別名稱,如1,a是一個以這些級別為下標的數組,其值從零開始計算。(10)將某列的數累加并打印出來@ubuntu:~$awk?'{?sum+=$1}?END{print?sum}'?file其含義是END表示緊跟其后面的語句只會在awk處理完所有行之后才被執行。

?

總結

以上是生活随笔為你收集整理的awk 匹配_linux的awk命令详解,通俗易懂的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。