【问题标题】:Grep square brackets, unix bashGrep方括号,unix bash
【发布时间】:2015-05-16 21:16:47
【问题描述】:

我需要对 txt 文件进行 grep,例如这是文件

[Hey my][aaaaaaa]
bla bla bla
bla bla

我想要第一行出现“Hey my”字样的地方

这是我的代码:

grep "Hey my" file.txt | head -n 1

但这将给出所有第一行,我只需要第一个方括号

我是怎么做到的..?

【问题讨论】:

  • 你还需要方括号吗?

标签: regex bash grep


【解决方案1】:

使用cut:

grep "Hey my" test | cut -d[ -f1-2

这几乎适用于任何 Unix(Mac OS、BSD)或 Linux。

【讨论】:

    【解决方案2】:

    您可能想查看带有 GNU grep-o 标志。它将仅显示匹配的行部分。此外,-m 将在一定数量的匹配后停止,因此您可以执行这 2 个命令

    grep -m 1 -o "Hey my" file.txt
    

    结果只会给你“嘿,我的”。

    如果你也想要括号,因为括号定义了正则表达式中的字符类,你可能想添加-F 标志来告诉grep 不要像使用正则表达式

    grep -m1 -oF "[Hey my]" file.txt
    

    【讨论】:

      猜你喜欢
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2010-10-14
      • 2014-07-22
      • 2012-09-27
      • 1970-01-01
      相关资源
      最近更新 更多