2013-06-17 2 views
2

특정 패턴을 포함하는 다수의 큰 ASCII 파일에서 모든 파일을 찾아야합니다. 지금 내가 그걸로하고있어패턴의 마지막 줄을 검색하여 파일 이름을 찾습니다.

grep -l <pattern> <files> 

매우 느리다. 그러나 패턴이 존재한다면 마지막 10 줄에 패턴이 나타납니다. 마지막 줄만 검색하여 검색 속도를 높일 수 있습니까? 예 : awk로?

+0

확인을 처리하는 동안 당신은 단순히. 어쩌면 내가 STH 오해, 파일 이름을 인쇄 할 수 있습니다,하지만 난 grep을 위해 꼬리 파이프를 출력을 사용하는 경우, 나는, 파일 이름을 얻을 수없는 입력 때문에 grep은 표준 입력입니다. – tmartin

+1

파이프가 느리면 더 나은 파일을 사용하십시오. – Endoro

답변

4

for f in $files; do 
    echo "---- File \"$f\" ------" 
    tail -n 10 "$f" | grep -l "$pattern" 
    # you can also save the stdout to $f... 
done 
+1

아니면 :'tail -n 10 "$ f"| grep -q "$ pattern"&& echo "$ f"' –

+0

따옴표를 쓰면 어떻게 잊을 수 있었는지 모르겠다 : D 또한 grep 구문을 사용하고 파일 앞에 echo 이름을 넣고 싶다. – bartimar

+0

Oh 나는 여러 번 실패한 것을 봅니다. 다시 thx :) – bartimar

1

파일의 특정 줄 수만 보려면 명령 구문을 따르십시오.

tail [+ number] [-l] [-b] [-c] [-r] [-f] [-c number | -n number] [file]

지금 당신은 당신의 특정 작업을 수행 할 수 greap 고양이를 COMAND하는 파이프를 사용할 수 있습니다.

tail -n 10 <fileName>|grep -l <pattern> <files>

Click here 자세한 내용을 알고 있습니다.

+0

그러나 grep의 출력을 다른 명령 (이 경우 꼬리)에 파이프하면 grep이 모든 단일 파일의 모든 단일 행을 검색하지 못하게합니다? – tmartin

+0

내 대답을 편집했습니다. 지금 시도해보십시오. –

관련 문제