Bash 如何仅将我给出的单词作为变量进行grep?

Bash 如何仅将我给出的单词作为变量进行grep?,bash,Bash,我想让格雷普在我的档案里写一个字,但只写我给格雷普的那部分 示例:在我的文件中,我有“hell\nhell:o”,我想要grep hell,但不是hello。 我如何才能做到这一点?使用grep的-o选项: grep -o hell your_file 从grep手册页面: -o、 --仅匹配 仅打印匹配行中匹配的(非空)部分,每个部分在单独的输出行上 尝试使用-oP echo "hell hello" | grep -oP '\bhell\b' 尝试一下: grep -E "\bhell

我想让格雷普在我的档案里写一个字,但只写我给格雷普的那部分

示例:在我的文件中,我有“hell\nhell:o”,我想要grep hell,但不是hello。
我如何才能做到这一点?

使用grep的-o选项:

grep -o hell your_file
从grep手册页面:

-o、 --仅匹配 仅打印匹配行中匹配的(非空)部分,每个部分在单独的输出行上


尝试使用
-oP

echo "hell hello" | grep -oP '\bhell\b' 
尝试一下:

grep -E "\bhell(\s|$)" file
如果只需要匹配的单词,请添加
o

kent$  echo "hell\nhell:o"|grep -oE "\bhell(\s|$)"
hell
或:

您的问题(和评论)不太清楚,但您可以尝试以下任一方法:

  • “消极前瞻”
  • 使用“线端锚点”

消极前瞻 以下正则表达式将匹配任何未后跟
hell
(根据需要进行调整):

grep
不支持此功能,因此您需要使用
perl
或其他工具:

echo -e "hell\nhell:o" \
    | perl -ne 'print if /hell(?!:)/'
端锚 以下内容适用于
grep
,仅在
hell
接触到行尾(
$
)时匹配:

echo-e“地狱\n地狱:o”\
|grep'hell$'

像这样:?我的错,我的问题措辞错误,事实上在我的文件中我有“hell\nhell:o”,我只想要grep hell谢谢。好吧,你可以按照你提到的编辑你的问题。你知道,没有人会看这些评论来澄清问题的主体。@Wizz欢迎来到StackOverflow。您可能希望在问题本身中包含可能的边缘情况。我的一些问题:你如何区分第一个“地狱”和第二个“地狱”?字母数字字符\b字?非印刷品?空白?(否则,vahdet的发现似乎是一个合适的解决方案。)您尝试了什么,为什么不起作用?所以您希望匹配
hell
,但不匹配
hell:o
。。。那
你好
地狱o
地狱b
等呢?我已经试过了,但它让我痛苦万分,我只需要他给我痛苦
hell(?!:)
echo -e "hell\nhell:o" \
    | perl -ne 'print if /hell(?!:)/'
hell$