파일에서 문자열을 검색하고 4줄의 컨텍스트를 보고합니다(일치 및 다음 3줄).

파일에서 문자열을 검색하고 4줄의 컨텍스트를 보고합니다(일치 및 다음 3줄).

디렉터리의 모든 파일에서 검색하려는 문자열(또는 문자열 목록)이 있습니다. 예를 들어, ABC를 검색 중인데 file1.txt6행에 ABC가 포함되어 있으면 파일에 6, 7, 8, 9행이 필요합니다. 이러한 모든 출력을 새 출력 파일로 이동하고 싶습니다.

답변1

아마도 이것이 잘 맞을 것입니다. grep -A(after-context) 옵션을 사용하여 일치하는 라인과 3개의 후속 라인을 출력합니다.

find . -name file\* -exec grep -A 3 ABC {} \; > result-filename

노트:result-filename에 배치하면 안 됩니다 directoryname(참조:grep: 입력 파일 "X"도 출력됩니다.).

다양한 모드를 다룹니다:

find . -name file\* -exec egrep -A 3 'ABC|XYZ' {} \; > result-filename

또는 파일의 여러 패턴(Evgeny Vereshchagin 덕분에):

find . -name file\* -exec grep -A 3 -f patterns.txt {} \; > result-filename

답변2

다음은 현재 디렉토리에서 점이 아닌 모든 파일을 검색합니다.

sed '/string/{
        $!N;$!N;$!N;$!N
        w ./new_out_file
     }' ./*

여러 가지 -F수정 -stringgrep -A각 일치 항목 앞에 파일 이름이 있든 없든 find먼저 스트림이 필요합니다.

cat ./* | grep -A2 -Ff pattern_file >outfile

답변3

나는 해결책을 얻었다:

grep -A 2 -f 'INPUT.txt' *.* >> RESULT.txt

관련 정보