文件:
cat test.txt
100 ***
10 ** // target
Grep:
grep -E '\*{2}' test.txt
100 ***
10 **
不是{m}
用来精确匹配数字吗?
如何使*
发生2次?
答案 0 :(得分:2)
您可以使用
grep -E '(^|[^*])\*{2}($|[^*])' test.txt
请参见online grep
demo:
test="100 ***
10 ** // target"
grep -E '(^|[^*])\*{2}($|[^*])' <<< "$test"
# => 10 ** // target
详细信息
(^|[^*])
-字符串或除*
以外的任何字符的开头\*{2}
-两个星号($|[^*])
-字符串结尾或除*
以外的任何字符。带有空白边界的变化
如果您只需要在空格之间匹配一个“单词”,请使用
grep -E '(^|[[:space:]])\*{2}($|[[:space:]])' test.txt
答案 1 :(得分:0)
一个简单的 basic 正则表达式也可以显式地指定"**"
,而不用'*'
包围。例如:
$ grep '^[^*]*[*][*][^*]*$' test.txt
10 **
这将与包含[*][*]
的行匹配,而该行中的任何地方都不会被另一个'*'
包围。