一、AWK正則匹配
AWK是一種強大的文本處理工具,在現代編程語言中廣泛使用。其中AWK正則表達式是其強大的功能之一。AWK正則表達式是一種強大的文本查找和匹配工具,可以對文本進行複雜的模式匹配。AWK正則表達式不僅支持基本的正則表達式,還支持擴展正則表達式。AWK正則表達式的語法非常類似於Perl正則表達式語法。
$ awk '/pattern/ { actions }' filename
其中pattern是指要匹配的正則表達式模式, actions 是在模式匹配成功時要執行的操作。下面是一個簡單的例子。
$ cat file.txt apple banana pear $ awk '/banana/ { print }' file.txt banana
二、AWK正則表達式匹配數字
在AWK正則表達式中,匹配數字是非常普遍的。AWK正則表達式中使用元字符來匹配數字。下面是一個例子。在這個例子中,將計算所有整數的總和。
$ cat file.txt 14 24 -37 $ awk '/^[0-9]+$/ {sum+=$1} END {print sum}' file.txt 1
在這個例子中,^[0-9]+$ 匹配一行完整的數字。 ^ 表示開頭, $ 表示結尾。 + 表示前一個字符出現一次或多次。
三、AWK正則表達式提取
AWK正則表達式也可以用於提取目標字符串。AWK正則表達式提取的方法是使用匹配組。匹配組是指在正則表達式中使用括號括起來的部分。匹配組可以在後面的操作中被引用。下面是一個示例,它從一行文本中提取出鍵值對。
$ cat file.txt name=john age=25 address=19 Main Street $ awk -F= '{print $1,$2}' file.txt name john age 25 address 19 Main Street
在這個例子中, -F= 指定了字段分隔符為等號。 $1 和 $2 分別是每一行中的第一個和第二個字段。
四、AWK正則表達式不顯示符號
AWK正則表達式有時候需要忽略一些特殊符號。可以通過在特殊符號前面加上反斜杠字符來實現。例如,下面的正則表達式匹配一個以字母a開頭或以字母b結尾的單詞。
$ cat file.txt apple bicycle car $ awk '/^a.*b$/ { print }' file.txt apple
在這個例子中, ^ 表示行首, . 表示匹配任意字符, * 表示前一個字符出現0次或多次, $ 表示行尾。這是一個非常強大的正則表達式,但有時候我們需要忽略行首和行尾的特殊符號。下面的例子使用 \\\\\\\\E 和 \\\\\\\\Q 在匹配時忽略行首和行尾的特殊符號。
$ awk '/\\\\\\Qa.*b\\\\\\E/ { print }' file.txt apple
五、AWK正則替換
AWK正則表達式還可以用於字符替換。常見的替換命令是使用 sub() 和 gsub() 函數。sub() 函數用於替換匹配到的第一個字符串,而 gsub() 函數用於替換所有匹配到的字符串。下面是一個使用 sub() 函數替換字符串的例子。
$ cat file.txt apple $ awk '{sub(/apple/, "banana"); print}' file.txt banana
在這個例子中, sub(/apple/, “banana”) 表示用 “banana” 替換第一個匹配到的 “apple”。
六、AWK正則表達式匹配字符串
AWK正則表達式也可以匹配字符串。與匹配數字一樣,可以使用元字符來匹配字符串。下面是一個例子,它從文本文件中提取出字母A開頭的單詞。
$ cat file.txt apple banana Bear $ awk '/^A/ { print }' file.txt
在這個例子中, /^A/ 匹配以字母A開頭的字符串。
七、AWK正則表達式if選取
AWK正則表達式還可以與if語句一起使用,根據匹配結果來執行不同的操作。下面是一個使用if語句的例子,如果匹配成功,將打印出匹配結果。
$ awk '/apple/ { if ($1 == "apple") { print } }' file.txt apple
在這個例子中,if語句根據匹配結果判斷 $1 是否為 “apple”,如果是,則輸出匹配結果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/246432.html