패턴 위에 두 줄을 인쇄하세요.

패턴 위에 두 줄을 인쇄하세요.

패턴이 처음 나타나는 부분 위의 줄을 포함하여 모든 내용을 제외한 파일 내용을 어떻게 인쇄합니까?

15번째 줄의 패턴이 "^Previous"라고 가정하면 1-13번째 줄을 인쇄하고 싶습니다.

답변1

sed모든 것을 스스로 할 수 있습니다:

sed -n '$!N;/.*PATTERN.*/q;P;D' infile

간단합니다. 자동 모드를 켜고 슬라이딩 창을 사용하여( N그리고 D패턴 공간에 항상 두 줄이 있도록), 마주치면 quit는 패턴 공간의 첫 번째 줄을 인쇄하고 루프를 다시 시작합니다.PATTERNP

gnu sed자동으로 인쇄 되지 않으므로 Q자동 모드를 건너뛸 수 있으므로 더 짧 습니다 .

sed  '$!N;/.*PATTERN.*/Q;P;D' infile

답변2

키스하는 건 어때?

sed '1,/^Previous/!d' file | head -n -2

관련 정보