Grep 方括号,unix bash

Grep square brackets, unix bash

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

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

我想要 "Hey my" 出现的第一行

所以这是我的代码:

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

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

我该怎么做..?

使用cut:

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

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

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

那样执行这 2 个命令
grep -m 1 -o "Hey my" file.txt

结果只会给你 "Hey my"。

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

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