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를 넣으면 파일에서 한 문자만 일치 합니다 *
.
여러 문자열의 일치를 허용하려면 -E
and |
연산자를 사용하세요. 예를 들어, 다음 명령은 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*