따라서 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
사용하기 불편하다면 grep
awk와 같은 다른 도구를 사용할 수 있습니다.
awk '/MARK/ { print saved_line }
{ saved_line=$0 }'
라인이 일치하면 저장된 라인을 인쇄하고 다시 필요할 경우를 대비하여 각 라인에 저장한다는 의미입니다.