【问题标题】:How to use grep with two patterns?如何使用两种模式的 grep?
【发布时间】:2014-06-09 18:50:27
【问题描述】:

我关注了许多链接和参考文档,但仍然遇到错误。 我想列出所有以“sx”开头或结尾的单词。 我已经找到了一个很好的解决方案:

awk '/^sx|sx$/' usr/dict/words

但是我尝试使用 grep 或 egrep 都没有成功。 然后我让它变得更简单。任何包含 'ax' 或 'sx' 的单词,它都不起作用!

grep 'ax|sx' words
grep -E '^ax\|sx$' words
egrep '^ax\|sx$' words

错误:

grep: illegal option -- E
Usage: grep -hblcnsviw pattern file . . .

任何建议表示赞赏。

【问题讨论】:

  • 除非您升级 grep 的版本,否则这里几乎没有什么帮助。或者,使用其他工具。
  • @devnull 看来你错了!因为问题已经解决了。
  • 我不明白之前接受的答案中提到的同样的事情对你没有用! egrep '^ax|sx$' words
  • @devnull 因为没有分组。带括号它工作得很好。
  • @devnull 我已添加您的答案以避免混淆。

标签: regex bash shell command-line


【解决方案1】:

这应该适合你:

egrep '(^ax|sx$)' usr/dict/words

注意:
我在 used 的字典中找不到任何以 sx 结尾的单词。

【讨论】:

  • 是的,它正在工作。你能解释一下区别吗。我已阅读文档,没有括号。
  • 你是对的。没有与 sx 相关的词。我只是用它作为例子,但是用斧头它可以工作。
  • 你的代码是对的,它只是错过了组(),所以它可以匹配^axsx$
猜你喜欢
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
相关资源
最近更新 更多