패턴이 처음 나타나는 부분 위의 줄을 포함하여 모든 내용을 제외한 파일 내용을 어떻게 인쇄합니까?
15번째 줄의 패턴이 "^Previous"라고 가정하면 1-13번째 줄을 인쇄하고 싶습니다.
답변1
sed
모든 것을 스스로 할 수 있습니다:
sed -n '$!N;/.*PATTERN.*/q;P;D' infile
간단합니다. 자동 모드를 켜고 슬라이딩 창을 사용하여( N
그리고 D
패턴 공간에 항상 두 줄이 있도록), 마주치면 q
uit는 패턴 공간의 첫 번째 줄을 인쇄하고 루프를 다시 시작합니다.PATTERN
P
gnu sed
자동으로 인쇄 되지 않으므로 Q
자동 모드를 건너뛸 수 있으므로 더 짧 습니다 .
sed '$!N;/.*PATTERN.*/Q;P;D' infile
답변2
키스하는 건 어때?
sed '1,/^Previous/!d' file | head -n -2