Bash
grep 用於任意長度的字母數字字元串,每邊都有一個冒號
你如何 grep 一個 1 到 50 個字元的字母數字字元串(理想情況下,任何長度都可以),每邊都有一個冒號——典型的結果是包含字元串的所有行
:shopping:
。到目前為止,我得到了下面的程式碼(我已經嘗試了一些變體),但它不起作用:grep ':[[:alnum:]]{1,100}:' ~/x.txt
您需要為此啟用擴展正則表達式:
grep -E ':[[:alnum:]]+:' ~/x.txt
使用基本的正則表達式,你可以這樣寫:
grep ':[[:alnum:]]\{1,100\}:' ~/x.txt
請注意,
\{
(相對於\+
或\?
例如)是標準的和可移植的,實際上 BRE 的+
and等價物?
通常用\{
:\{1,\}
和\{0,1\}
.grep -E
不過它也是標準且可移植的,因此您不妨使用它,因為它可以在這些情況下使正則表達式更具可讀性。