【问题标题】:How can I match the outer bracket with grep如何将外括号与 grep 匹配
【发布时间】:2014-09-10 15:00:31
【问题描述】:

我想从文件中提取所有行

T[0-9]-[0-9][.*

例如:

T1-3[1: 139343400 -- 81586290 --> 220929690]

我尝试使用 grep T[0-9]-[0-9]\\[.*,但得到以下输出。

grep: 不匹配 [ 或 [^

任何关于提取上述类型行的建议/cmets 将不胜感激。

【问题讨论】:

  • grep (GNU grep) 2.18 对我来说工作正常。但是,如果您尝试只使用一个反斜杠会怎样:grep "T[0-9]-[0-9]\[.*"
  • 一个反斜杠和引号应该可以正常工作。两个反斜杠意味着您正在寻找一个文字反斜杠,后跟一个您从未完成定义的字符集。单反斜杠 + 左括号 = 文字左括号。

标签: grep square-bracket


【解决方案1】:

你确定你试过了

grep T[0-9]-[0-9]\\[.*

应该没问题。但是如果你这样做了

grep T[0-9]-[0-9]\[.*

然后你会得到“Unmatched [”,因为“[”被 shell 转换为只是“[”。

你也可以这样做

grep 'T[0-9]-[0-9]\[.*'

【讨论】:

  • 谢谢安迪。最初我只尝试一个反斜杠。我尝试使用双反斜杠,它成功了。
猜你喜欢
  • 2021-09-19
  • 2019-04-30
  • 2021-09-05
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
相关资源
最近更新 更多