【问题标题】:Find characters that have 2 or more *查找具有 2 个或更多 * 的字符
【发布时间】:2020-05-11 07:56:13
【问题描述】:

如果我想显示 2 倍或更多倍的字符 this *.

egrep '*{2}' file 

【问题讨论】:

  • *regex 中的一个特殊字符。为了代表自己,你必须逃避它(即\*)。两个或多个连续出现是{2,},但如果它们不需要连续出现,那么{...} 没有帮助。

标签: regex linux grep posix


【解决方案1】:

你可以使用

grep '\*[^*]*\*' file 

\*[^*]*\* 模式将匹配包含 * 的行,然后是除 * 之外的任何 0+ 字符,然后是 *

online demo:

s="*one
*two*
.... *three* and more text here**"
grep '\*[^*]*\*' <<< "$s"

输出:

*two*
.... *three* and more text here**

【讨论】:

  • @maikl 是的,你可以在 egrep 中使用相同的方法,请参阅this online demo
  • @maikl 是的,请参阅我之前评论中的演示链接。
  • 我想你可以用grep '\**\*' 来简化它,不是吗?
  • @Quasímodo \**\* 匹配带有 1 个或多个星号的字符串,因为 \** 匹配 0+ 个星号,然后 \* 匹配 1 个星号。
  • @WiktorStribiżew 对不起,我的意思是grep '\*.*\*'
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 2012-10-25
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多