find와 grep을 효과적으로 사용하는 방법

find와 grep을 효과적으로 사용하는 방법

현재 디렉터리에서 특정 문자열이 포함된 파일을 찾으려면 . 명령을 사용합니다 find . -type f -print0 | xargs -0 grep -ial <word>. 그러나 이는 파일 경로만 표시합니다. 파일 경로, 줄 번호, n개의 헤더 줄과 후행 줄(매개변수에 따라 다름)과 일치하는 줄, 다음 결과 앞에 개행을 인쇄하는 형식으로 결과를 인쇄하려면 어떻게 해야 합니까? Linux 검색 및 텍스트 조작 도구의 전력 사용량과 기술을 배우기 위한 최고의 리소스는 무엇입니까?

답변1

grep -iarn -C3 word .

그러면 현재 디렉터리와 모든 하위 디렉터리( find . -type f -print0명령과 동일)를 검색하고 "단어"와 일치하는 파일의 줄을 컨텍스트의 앞뒤 줄 3개와 함께 표시하며, 각 줄을 표시하는 파일 이름과 줄 번호도 표시합니다. .

일치하는 항목 사이에 빈 줄이 있는 대신 grep바로 위에 줄 쌍이 제공됩니다 --. 출력을 다른 프로그램에 제공하기 위해 빈 줄이 정말로 필요한 경우 다음 버전을 사용할 수 있습니다.

grep -iarn -C3 word . | uniq | sed -e 's/^--$//'

파워 트릭을 배우는 방법에 대한 질문의 경우 Unix man페이지는 읽기가 꽤 지루하지만 man몇 가지 일반적인 도구에 대해 알아보기 위해 페이지를 탐색하는 것은 매우 교육적입니다. 또한 Linux나 UNIX에서 텍스트 조작을 많이 한다면 Perl을 배우는 것을 특히 권장합니다.

관련 정보