일치하는 줄의 내용을 제외하고 grep -C 또는 -A 또는 -B를 결합할 수 있습니까?

일치하는 줄의 내용을 제외하고 grep -C 또는 -A 또는 -B를 결합할 수 있습니까?

따라서 grep을 사용하면 -A를 사용하여 "이후"와 일치하는 행을 얻을 수 있고 -B를 사용하여 "이전"과 일치하는 행을 얻을 수 있습니다. -C를 사용하여 전후의 행을 가져올 수도 있습니다.

이런 데이터가 좀 있어요

boring data
boring data
boring data
interesting value
MARK
boring data
boring data
boring data
interesting value
MARK

다음과 같은 출력을 얻고 싶습니다.

interesting value
interesting value

-BI 옵션을 사용하면 다음을 얻을 수 있습니다.

# cat somefile | grep -B 1 MARK

interesting value
MARK
interesting value
MARK

MARK 라인을 완전히 제외하고 싶습니다.

답변1

grep-v첫 번째 것 뒤에 역을 추가 할 수 있습니다 grep.

$ grep -B1 --no-group-separator 'MARK' somefile | grep -v 'MARK'
interesting value
interesting value

--no-group-separator일치 항목 사이에 구분 기호를 생략하는 기능을 추가했습니다 .

답변2

사용하기 불편하다면 grepawk와 같은 다른 도구를 사용할 수 있습니다.

awk '/MARK/ { print saved_line }
     { saved_line=$0 }'

라인이 일치하면 저장된 라인을 인쇄하고 다시 필요할 경우를 대비하여 각 라인에 저장한다는 의미입니다.

관련 정보