awk命令使用例項
Awk是為高階文字處理而設計的通用 語言。它主要用作報告和分析工具。本文介紹awk在 行中操作文字的使用方式。 |
Awk一次對一條記錄進行操作,直到到達輸入的末尾。記錄由一個稱為記錄分隔符的字元分隔。預設的記錄分隔符是換行符,這意味著文字資料中的每一行都是一個記錄。
每條記錄中的欄位由
$
後跟欄位號(以1開頭)引用。第一個欄位用
$1
表示,第二個欄位用
$2
表示,依此類推。最後一個欄位也可以用特殊變數
$NF
引用。整個記錄可以用
$0
引用。
Awk支援不同型別的模式,包括正規表示式、關係表示式、範圍和特殊表示式模式。
在下面的例子中,將建立一個名為“ teams.txt”的檔案,檔案內容如下:
[root@localhost ~]# cat teams.txt Bucks Milwaukee 60 22 0.732 Raptors Toronto 58 24 0.707 76ers Philadelphia 51 31 0.622 Celtics Boston 49 33 0.598 Pacers Indiana 48 34 0.585
Awk的正規表示式模式用斜線(//)包含起來,例如:要顯示包含“0.5”的每條記錄,可以執行以下 :
[root@localhost ~]# awk '/0.5/ {print $0}' teams.txt Celtics Boston 49 33 0.598 Pacers Indiana 48 34 0.585
要顯示包含“0.5”的每條記錄的第一個和第二個欄位:
[root@localhost ~]# awk '/0.5/ {print $1,$2}' teams.txt Celtics Boston Pacers Indiana
顯示一個或者多個數字開頭的記錄,並列印第一列:
[root@localhost ~]# awk '/^[0-9]/ {print $1}' teams.txt 76ers
關係表示式模式通常用於匹配特定欄位或變數的內容。
常用的關係運算子有:
-
~
:包含 -
!~
:不包含 -
>
:大於 -
<
:小於 -
>=
:大於等於 -
<=
:小於等於 -
=
:等於 -
!=
:不等於
使用
~
“包含”比較運算子。例如,顯示第二個欄位中包含“ia”字元的每條記錄:
[root@localhost ~]# awk '$2 ~ /ia/ {print $0}' teams.txt 76ers Philadelphia 51 31 0.622 Pacers Indiana 48 34 0.585
若要匹配不包含給定字元的記錄,可以使用
!~
不包含運算子。例如,顯示第二個欄位中不包含“ia”字元的每條記錄:
[root@localhost ~]# awk '$2 !~ /ia/ {print $0}' teams.txt Bucks Milwaukee 60 22 0.732 Raptors Toronto 58 24 0.707 Celtics Boston 49 33 0.598
使用
!=
“不等於”運算子,
使用
>=
“大於等於”運算子,顯示第四個欄位大於等於30的記錄:
[root@localhost ~]# awk '$4 >= 30 {print $0}' teams.txt 76ers Philadelphia 51 31 0.622 Celtics Boston 49 33 0.598 Pacers Indiana 48 34 0.585
範圍模式由逗號分隔的兩組字元組成,從與第一個字串匹配的記錄開始,直到與第二個字串的記錄匹配為止的所有記錄。
例如,顯示從“Raptors”到 “Celtics”在內的記錄,:
[root@localhost ~]# awk '/Raptors/,/Celtics/ {print $0}' teams.txt Raptors Toronto 58 24 0.707 76ers Philadelphia 51 31 0.622 Celtics Boston 49 33 0.598
範圍模式也可以使用關係表示式,例如,顯示第四個欄位等於31到第四個欄位等於34 的記錄:
[root@localhost ~]# awk '$4 == 31 , $4 == 34 {print $0}' teams.txt 76ers Philadelphia 51 31 0.622 Celtics Boston 49 33 0.598 Pacers Indiana 48 34 0.585
Awk包括以下特殊模式。
-
BEGIN
:在處理記錄之前執行此操作。 -
END
:用於在處理記錄之後執行此操作。
BEGIN模式通常用於設定變數,END模式用於處理統計的資料。例如,下面將顯示“Start Processing.”,然後顯示第三個欄位,最後顯示”End Processing.”:
[root@localhost ~]# awk 'BEGIN {print "Start Processing."};{print $3};END {print "End Processing."}' teams.txt Start Processing. 60 58 51 49 48 End Processing.
Awk有許多內建變數,允許控制程式的處理方式。下面是一些常見的內建變數:
-
NF
:記錄中的欄位數 -
NR
:當前記錄的編號 -
FILENAME
:當前正在處理的輸入檔名稱 -
FS
:欄位分隔符 -
RS
:記錄分隔符 -
OFS
:輸出欄位分隔符 -
ORS
:輸出記錄分隔符
下面是一個顯示如何列印檔名和行數的示例:
[root@localhost ~]# awk 'END {print "File" , FILENAME , "contains" , NR , "lines."}' teams.txt File teams.txt contains 5 lines.
Awk是最強大的文字處理工具之一。
本文原創地址: 編輯:逄增寶,稽核員:逄增寶
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2726446/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- restorecon 命令使用例項REST
- Tee命令使用例項
- cut命令的使用例項
- Linux中printf命令使用例項Linux
- Tee命令的幾個使用例項
- Linux 中 ss 命令的使用例項Linux
- Linux 中的 JQ 命令使用例項Linux
- Linux中ip命令的使用例項Linux
- Linux中的basename命令使用例項Linux
- 使用 awk 命令統計文字
- Linux命令:grep命令AND、OR、NOT例項Linux
- awk命令
- nmap命令常用例項
- Linux系統中的basename命令使用例項Linux
- linux系統awk命令使用詳解Linux
- Linux中head命令例項Linux
- tail命令學習例項AI
- linux的awk命令Linux
- expand 與 unexpand 命令例項教程
- Linux中介紹who命令例項Linux
- msfvenom使用例項
- pinctrl使用例項
- expect使用例項
- 【案例】Linux三劍客中awk命令如何使用?Linux
- openstack命令建立雲主機例項
- Linux系統中head命令例項Linux
- Linux:“awk”命令的妙用Linux
- Linux awk 命令詳解Linux
- tunna工具使用例項
- Linux中awk命令詳解Linux
- 技能篇:awk教程-linux命令Linux
- docker-compose 使用例項Docker
- C# IDispose使用例項C#
- JavaScript 複習之例項物件與 new 命令JavaScript物件
- 設計模式:命令模式(Command Pattern)及例項設計模式
- Linux系統中的管道命令、grep命令、sed命令和awk命令Linux
- Memcached安裝與使用例項
- Composer 使用 JWT 生成 TOKEN 例項JWT