Regular-Expression
不理解匹配整數的正則表達式模式
https://www.gnu.org/software/sed/manual/sed.html#Command_002dLine-Options
-n
–quiet
–silent
-e script
–expression=script 將腳本中的命令添加到要在處理輸入時執行的命令集中。
像這個答案:
echo $'For example:\nThis is counter1 1000\nthis counter2 2000\n this counter3 is higher value 3000\ndone.\n' | sed -ne 's/^.* \([0-9]\{1,99\}\)/\1/p'
我理解
([0-9]\{1,99\}\)
指的是模式整數。
^
引用字元串的開頭。
.*
指 1 個或多個字元。但總的來說,我仍然對
sed -ne 's/^.* \([0-9]\{1,99\}\)/\1/p'
(首先,這不是 bash 整數正則表達式模式。
sed
正在處理正則表達式,與 bash 無關)所以我知道你無法找出正則表達式
sed -ne 's/^.* \([0-9]\{1,99\}\)/\1/p'
讓我們讓它更簡單。等效的程式碼是
sed -E -ne 's/^.* ([0-9]{1,99})/\1/p'
啟用擴展(現代
-E
)正則表達式,您不必使用\
s/pattern/replacement/
運算符在左側查找與正則表達式模式匹配的字元串,並將其替換為右側的字元串。現在,讓我們專注於
/^.* ([0-9]{1,99})/
^
在行首匹配.*
匹配任何字元 0 次或更多次- (space) 匹配單個空格字元
[0-9]{1,99}
匹配任何出現最少 1 次到最多 99 次的數字;所以任何長度為 1 到 99 的數
([0-9]{1,99})
在括號中,這意味著 sed 將“擷取”此子字元串並將其\1
用於使用的替換部分。