grep
대용량 텍스트 파일을 검색하고 여러 키워드가 포함된 단락을 반환하는 데 이를 사용하려고 합니다 . 또한 결과에서 주변 행을 반환하고 싶습니다. 예를 들어 파란색, 녹색, 노란색이라는 단어를 검색하고 싶습니다. "colors.txt"라는 파일에서 세 단어가 모두 포함된 단락을 찾으려면 다음 코드를 시도했습니다.
grep blue colors.txt | grep green | grep yellow
그러나 이것은 노란색, 녹색 및 파란색을 포함하는 단락 목록이 아닌 노란색 목록만 제공합니다.
그런 다음 주변 단어를 표시하고 싶어서 다음과 같은 것을 사용했습니다.
grep -B 5 blue colors.txt | grep green colors.txt
기타 등등
어쨌든 - 큰 텍스트 파일이 있고 세 가지 색상이 포함된 섹션을 찾고 그 주위에 선을 표시하고 싶습니다.
답변1
perl -00 -n -e 'print if (m/blue/i && m/green/i && m/yellow/i)' filename
perl
단락 읽기 모드( )를 사용하여 -00
세 단어가 모두 포함된 단락만 인쇄합니다(대소문자 구분 일치).
"단락"은 하나 이상의 빈 줄로 다른 단락과 구분된 하나 이상의 텍스트 줄입니다.
예를 들어, 귀하의 질문 텍스트를 파일에 저장하고 perl
그 파일에 다음 줄을 실행했습니다. 출력은 다음과 같습니다
i am trying to use grep to search a large text file, and return the
paragraph containing a few key words. I also want to return the
surrounding lines in the result. So, for example I have the following
words I am going to search for: blue, green, yellow. If I wanted to find
the paragraph containing all 3 words, in the file called 'colors.txt', I
tried the following code:
grep blue colors.txt | grep green | grep yellow
This only gave me the listings for yellow though, and not the ones that
had yellow, green and blue, in the paragraph.
즉, 출력 세그먼트는 3개뿐인 반면 질문에는 세그먼트가 7개 있습니다.