编辑

编辑

我在从 grep 中过滤出 hanzoMollusc (2) 时遇到问题。

https://node.hanzo.com/production/application/ (1) 

https://node.hanzoMollusc.com/Messaging/Receiver (2)

我的 grep 命令是 (2) 的,它工作得很好。

/usr/xpg4/bin/grep -E 'node.hanzoMollusc.*Exception' diag* | grep -c 2013-03-28

问题是如果我想搜索 (1) 我需要稍微修改 grep 命令并在手册中所述的地方使用 -F

"Matches using fixed strings. Treats  each pattern  specified as a string instead of a regular expression"

这是我到目前为止所想到的......这不起作用......

/usr/xpg4/bin/grep -F 'https://node.hanzo.com/application/*Exception' diag* | grep -c 2013-03-28

我的问题在于域部分,即node.hanzo和node.hanzoMollusc,这就是为什么我没有在(1)上使用-E。谁能帮我解决这个问题。

编辑

通过对吉尔斯的例子进行一些调整,我能够得到我想要的东西。实际上他是对的,我尝试阅读我的问题,但不清楚。我的问题是这样的。

我在过滤此内容时遇到问题

https://node.hanzoMollusc.com/Messaging/Receiver

每次我使用这个命令时:

/usr/xpg4/bin/grep -E 'node.hanzoMollusc.*Exception' diag* | grep 2013-03-28

因为它还在结果中显示了node.hanzo 和node.hanzoMollusc。

我调整了吉尔斯的例子,我能够得到正确的结果

/usr/xpg4/bin/grep -E '(https://node.hanzo.com/production/application)[/ ].*Exception' diag*

非常感谢吉尔斯。

答案1

不清楚你想要匹配什么:你的例子是矛盾的。

grep -F匹配精确的字符串。如果*在参数中放入 a ,则它仅匹配*文件中的一个字符。

如果您想允许匹配多个字符串,请使用-Eand|运算符。例如,以下命令匹配包含https://node.hanzo.com/production/application/somepath Exception Fooor 的行https://node.hanzoMollusc.com/Messaging/Receiver/somepath Exception Foo(其中该/somepath部分是可变的并且可以省略)。

grep -E '(https://node.hanzo.com/production/application|node.hanzoMollusc.com/Messaging/Receiver)[/ ].*Exception' diag*

相关内容