使用grep进行单个空格匹配

3
我是一个有用的助手,可以帮您进行文本翻译。

我正在尝试使用grep匹配字符串。我想要匹配所有包含两个单词的字符串,其中一个单词可以是任何东西,另一个单词是"time"。例如:

输入:

AZ time
CA summer time
Winter time
time here!
time in AZ

输出:

AZ time
Winter time

我尝试使用grep "[a-zA-z] time$]",但是输出结果有些问题:
AZ time
CA summer time
Winter time

你知道这是为什么吗?句子中只能有一个空格。基本上是“时间”结构。谢谢!


不需要使用 <br/> 标签,这很容易。 - MightyPork
[a-zA-Z] 是捕获单词 time 前面的字母,因此您将捕获 AZ time 中的 ZCA summer time 中的 rWinter time 中的 r。 您需要使用 ^[a-zA-Z]+ time$ 来匹配字符串的开头和结尾。 - OnlineCop
2个回答

1
您可以使用此egrep
egrep "^[a-zA-Z]+ time$" file
AZ time
Winter time

或者使用grep,您可以使用:

grep "^[[:alpha:]]\+ time$" file

1
你的 [a-zA-z] 应该使用大写字母 Z: [a-zA-Z] - OnlineCop
谢谢,那是个打字错误,我已经修正了。 - anubhava

1
你可以使用以下内容。
grep '^[a-zA-Z]\+ time' file

为什么需要 + ?我只想匹配一次。 - user3750474
“+” 表示匹配任意字符从 “a” 到 “z”(1 次或多次),如果去掉量词,它只会匹配一个字母从 “a” 到 “z”。 - hwnd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接