文件:
cat test.txt
100 ***
10 ** // target
查询:
grep -E '\*{2}' test.txt
100 ***
10 **
{m}
不是用来精确匹配号码的吗?
如何获取恰好出现 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
关于正则表达式匹配特殊字符的精确出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622261/