디렉터리의 모든 파일에서 검색하려는 문자열(또는 문자열 목록)이 있습니다. 예를 들어, ABC를 검색 중인데 file1.txt
6행에 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
수정 -string
grep -A
각 일치 항목 앞에 파일 이름이 있든 없든 find
먼저 스트림이 필요합니다.
cat ./* | grep -A2 -Ff pattern_file >outfile
답변3
나는 해결책을 얻었다:
grep -A 2 -f 'INPUT.txt' *.* >> RESULT.txt