grep의 결과를 grep하는 방법은 무엇입니까?

grep의 결과를 grep하는 방법은 무엇입니까?

어떤 파일에 특정 단어가 포함되어 있는지 확인하려면 일부 파일을 grep해야 합니다.

grep -l word *

다음으로, 이 파일 목록을 grep하여 어떤 파일에 다른 단어가 포함되어 있는지 확인해야 합니다. 가장 쉬운 방법은 아마도 스크립트를 작성하는 것이지만 어떻게 해야 할지 잘 모르겠습니다.

답변1

모든 파일 이름에 공백, 작은따옴표, 큰따옴표 또는 백슬래시 문자(또는 - 로 시작하는 GNU 문자 grep)가 포함되어 있지 않다고 가정하면 다음을 수행할 수 있습니다.

grep -l word * | xargs grep word2

Xargs는 첫 번째 grep의 각 파일에 대해 두 번째 grep을 실행합니다.

GNU grep/ xargs또는 호환성을 사용하면 다음을 통해 더욱 안정적으로 만들 수 있습니다.

grep -lZ word ./* | xargs -r0 grep word2

Use는 인쇄 파일 이름을 NUL로 구분 -Z하므로 grep와 함께 사용할 수 있습니다 . xargs -0첫 번째 옵션에서 아무것도 찾지 못하면 두 번째 -r옵션을 실행하지 않아도 됩니다.xargsgrepgrep

답변2

grep -l word1 $(grep -l word2 *)

아니면 같은 줄에 있는 두 단어 중 하나일 수도 있습니다.

grep -w 'word1\|word2' *

바라보다여기

답변3

특정 단어가 포함된 파일을 찾은 다음 다른 단어가 포함된 파일을 필터링해야 하는 경우 다음과 같은 일련의 명령을 사용할 수 있습니다.

grep word * | awk -F ':' '{print $1}'|uniq | xargs grep word2
  • grep word *- "단어"를 포함하는 모든 파일이 표시되고 파일 이름이 목록의 첫 번째로 표시됩니다.
  • awk -F ':' '{print $1}'- 결과의 파일 이름만 인쇄합니다.
  • uniq- 파일 이름을 두 번 이상 인쇄하지 않도록 합니다.
  • xargs grep word2- 받은 파일 목록에서 다시 검색합니다.

관련 정보