편집하다

편집하다

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를 사용하지 않습니다. 누구든지 이 문제를 해결하도록 도와줄 수 있나요?

편집하다

Giles의 예를 약간 조정함으로써 내가 원하는 것을 얻을 수 있었습니다. 사실 그의 말이 맞습니다. 제 질문을 읽어보았지만 명확하지 않습니다. 내 문제는 이것이다.

이 콘텐츠를 필터링하는 데 문제가 있습니다.

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

이 명령을 사용할 때마다:

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

결과에 node.hanzo 및 node.hanzoMollusc도 표시되기 때문입니다.

Giles의 예를 적용하여 올바른 결과를 얻을 수 있었습니다.

/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 Foo또는 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*

관련 정보