2011-05-10 2 views
2

gzip으로 묶인 아파치 액세스 로그 파일에 줄 목록을 가져 오는 데 문제가 있습니다. 내가 원하는 것은 로그 파일의 번호가 1과 2 인 목록을 얻은 다음 grep을 통해 특정 텍스트와 일치하는 줄을 추출하는 것입니다. LS는 정규식을 지원하지 않기 때문에파이프 특정 gzip 로그 파일 목록을 zgrep에

zgrep /pathname/ access_*.log.1.gz 

, 내가 생각 해낸 :

나는 원래 "/ 경로 이름"텍스트가 텍스트가 내가 찾던 한이 액세스 로그 아카이브를 그냥 작동있어 1. 번호 는 I 원하는 파일의 현재 디렉토리에서 목록을 얻으려면 다음 내 문제는 지금 파일 목록 출력을 복용하고 내 텍스트와 일치하는 파일 내에서 행을 반환하는 파일을 통해 zgrepping됩니다

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n' 

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||" 

. 내가 여기 잘못된 나무를 짖고 있니?

답변

2

시도 :

zgrep /pathname/ access_*.log.{1,2}.gz 

또는 간부 찾을 사용

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \; 
+0

담근. 대답은 리눅스를 다룰 때 상상할 수있는 것보다 쉽습니다. 그건 괜찮 았어, 도그 사람. 많이 고마워! – ogradyjd

+0

나는 첫 번째 것을 곁에 사용했다. 나는 exec 명령으로 두 번째 명령을 시도했는데 그것도 효과가 있었다. 대답에 다시 한번 감사드립니다. – ogradyjd

0

나는 아파치 로그가없는, 그래서 비슷한, 그러나 동일한 패턴을 사용

ls /var/log/*.[12].gz 

셸은 정규 표현식을 지원하지 않지만 [123] 또는 [1-3]뿐만 아니라 {1,2,3} 및 {1..3} 또는 심지어 {o..w} 및 {066..091}.