grep 用于任意长度的字母数字字符串,两侧各有一个冒号

grep 用于任意长度的字母数字字符串,两侧各有一个冒号

如何 grep 查找 1 到 50 个字符的字母数字字符串(理想情况下,任何长度都可以),两侧各有一个冒号 - 典型的结果是包含该字符串的所有行:shopping:。到目前为止,我已经得到了下面的代码(我已经尝试了一些变体),但它不起作用:

grep ':[[:alnum:]]{1,100}:' ~/x.txt

答案1

您需要为此启用扩展正则表达式:

grep -E ':[[:alnum:]]+:' ~/x.txt

答案2

使用基本的正则表达式,你可以这样写:

grep ':[[:alnum:]]\{1,100\}:' ~/x.txt

请注意,\{(与\+\?相对)是标准且可移植的,实际上+和的 BRE 等效项通常用:和?编写。不过,它也是标准且可移植的,因此您不妨使用它,因为在这些情况下它可以使正则表达式更具可读性。\{\{1,\}\{0,1\}grep -E

答案3

您正在使用扩展正则表达式,因此需要使用 -E 选项:

grep -E ':[[:alnum:]]{1,100}:' ~/x.txt

答案4

由于没有其他人提到它,您也可以使用egrep,据我了解,它相当于grep -E

egrep ':[[:alnum:]]{1,100}:' ~/x.txt

相关内容