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
我需要对 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
将在一定数量的匹配后停止,因此您可以像
grep -m 1 -o "Hey my" file.txt
结果只会给你 "Hey my"。
如果你也想要括号,因为括号在正则表达式中定义字符 类 你可能想添加 -F
标志来告诉 grep
不要使用像 [=17 这样的正则表达式=]
grep -m1 -oF "[Hey my]" file.txt