Unix / Linux终端,如何显示特定字母后跟其他字母?

时间:2017-04-12 19:56:48

标签: linux unix terminal

我通过Linux终端创建了一个文件,并将其命名为人,该文件的内容如下。

Mr. Smith
Mrs. Jenn Bewlite
Ms Carmichael
Dr Ivan James
Mrs Holly Alva Beswol
Mrs James Sheepwool
Mr. Hitchcock

如何在字母H后面的行上显示字母为o的行。

我曾尝试使用以下命令,但它没有工作......也许我有一个错字。

$ egrep -w 'H|o' /home/liveuser/people
$ grep "H|o" people

3 个答案:

答案 0 :(得分:0)

您的regexp语法错误。使用H.*o,而不是H|o

答案 1 :(得分:0)

喜欢这个?:

$ grep "H.*o" foo
Mrs Holly Alva Beswol
Mr. Hitchcock

答案 2 :(得分:0)

你没有拼写错误。你要做的就是召唤 "正则表达式"。

  

如何在字母o后面显示字母H后面的行。

我假设您希望匹配H不区分大小写,以及跟随字符" o"之后的任何字符。如果我误解了,请发表评论以纠正我。

grep -i "h.*o" /home/liveuser/people

这样做可以解决你的问题。

您可以将/home/liveuser/people替换为您想要的任何路径。我看到你试着只使用" people"如果您当前的目录是/ home / liveuser

,这很好

请注意,您可以使用" egrep"太

说明

-i标志使grep不区分大小写 至于"h.*o",有4件事情在继续:

  1. " h"匹配字符" h"
  2. "。"匹配任何字符。 (换行除外)
  3. " *"这使得前一个字符或表达式多次匹配。在这种情况下,它匹配任何数量的不是新行
  4. 的字符
  5. " o"确保我们有一个" o"在" h"之后中间有任何字符。
  6. 指向grep中正则表达式的页面的链接:Regular Expressions in grep