와일드 카드가있는 여러 문자열에 대한 GREP 그들이 어떻게 생겼는지의 예입니다. 2014-05-01T15:53:16+00:00 DEBUG

특정 일부터 로그 파일의 줄을 복사하려고합니다.

다음은 그들이 어떻게 생겼는지의 예입니다.

2014-05-01T15:53:16+00:00 DEBUG (7):

2014-04-301T11:08:10+00:00 DEBUG (7):

이 GREP 명령은 정확한 문자열에만 작동합니다.

grep -w '2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\|2014-04-26\|2014-04-25\|2014-04-24\|2014-04-23\|2014-04-22\|2014-04-21\|2014-04-202014-04-19' /test_custom.log > new_file.log

와일드 카드를 추가하려고하면 작동하지 않습니다. 나는 또한 동일한 결과로 여러 가지 다른 방법을 시도했습니다.

grep -w '2014-04-30*\|2014-04-29*\|2014-04-28*\|2014-04-27*\|2014-04-26*\|2014-04-25*\|2014-04-24*\|2014-04-23*\|2014-04-22*\|2014-04-21*\|2014-04-20*' /test_custom.log > new_file.log

어떤 제안?



답변

*정규 표현식에서 파일 이름 와일드 카드와 다른 의미를 갖습니다. 앞의 것을 0 번 이상 반복* 한다는 의미 입니다. 그냥 “어떤”말을하려면 사용해야 할 곳 “모든 문자”를 의미합니다..*.

또한 날짜로 시작하는 모든 줄을 원하면 줄을 시작과 일치하도록을 -w추가하고 추가하십시오 ^.

grep '^\(2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\)'

날짜는 괄호로 묶여 있으므로 ^매번 반복 할 필요가 없습니다 .