awk是為高階文字處理而設計的通用指令碼語言。它主要用作報告和分析工具。本文介紹awk在命令列中操作文字的使用方式。指令碼awk是為高階文字處理而設計的通用指令碼語言。它主要用作報告和分析工具。本文介紹awk在命令列中操作文字的使用方式。命令awk是為高階文字處理而設計的通用指令碼語言。它主要用作報告和分析工具。本文介紹awk在命令列中操作文字的使用方式。awk一次對一條記錄進行操作,直到到達輸入的末尾。記錄由乙個稱為記錄分隔符的字元分隔。預設的記錄分隔符是換行符,這意味著文字資料中的每一行都是乙個記錄。
每條記錄中的字段由$
後跟字段號(以1開頭)引用。第乙個欄位用$1
表示,第二個欄位用$2
表示,依此類推。最後乙個欄位也可以用特殊變數$nf
引用。整個記錄可以用$0
引用。
awk模式
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/ ' teams.txt
celtics boston 49 33 0.598
pacers indiana 48 34 0.585
要顯示包含「0.5」的每條記錄的第乙個和第二個字段:
[root@localhost ~]# awk '/0.5/ ' teams.txt
celtics boston
pacers indiana
顯示乙個或者多個數字開頭的記錄,並列印第一列:
[root@localhost ~]# awk '/^[0-9]/ ' teams.txt
76ers
關係表示式模式關係表示式模式通常用於匹配特定欄位或變數的內容。
常用的關係運算子有:
使用~
「包含」比較運算子。例如,顯示第二個欄位中包含「ia」字元的每條記錄:
若要匹配不包含給定字元的記錄,可以使用!~
不包含操作符。例如,顯示第二個欄位中不包含「ia」字元的每條記錄:
[root@localhost ~]# awk '$2 !~ /ia/ ' teams.txt
bucks milwaukee 60 22 0.732
raptors toronto 58 24 0.707
celtics boston 49 33 0.598
使用!=
「不等於」操作符,
使用>=
「大於等於」操作符,顯示第四個字段大於等於30的記錄:
範圍模式
範圍模式由逗號分隔的兩組字元組成,從與第乙個字串匹配的記錄開始,直到與第二個字串的記錄匹配為止的所有記錄。
例如,顯示從「raptors」到 「celtics」在內的記錄,:
範圍模式也可以使用關係表示式,例如,顯示第四個字段等於31到第四個字段等於34 的記錄:
特殊表示式模式
awk包括以下特殊模式。
begin模式通常用於設定變數,end模式用於處理統計的資料。例如,下面將顯示「start processing.」,然後顯示第三個字段,最後顯示」end processing.」:
內建變數
awk有許多內建變數,允許控制程式的處理方式。下面是一些常見的內建變數:
下面是乙個顯示如何列印檔案名和行數的示例:
[root@localhost ~]# awk 'end ' teams.txt
file teams.txt contains 5 lines.
總結awk是最強大的文字處理工具之一。 js 判斷字串是否包含某個字元
方法一 indexof 推薦 var str 123 console.log str.indexof 3 1 trueindexof 方法可返回某個指定的字串值在字串中首次出現的位置。如果要檢索的字串值沒有出現,則該方法返回 1。方法二 search var str 123 console.log ...
mysql 字段判斷是否包含某個字串
select id,learn plan id,sequence,is valid,support goods level from qs study subject plan configuration where is valid 1 and learn plan id 3 and find i...
Mysql字串字段判斷是否包含某個字串的方法
方法一 like select from 表名 where 欄位名 like 字元 方法二 find in set 利用mysql 字串函式 find in set select from users where find in set 字元 欄位名 這樣是可以的,怎麼理解呢?mysql有很多字串函...