일치하는 단어 뒤의 모든 줄을 다음 일치하는 단어까지 가져오는 방법은 무엇입니까?
예를 들어, 내 입력은 아래와 같습니다.
1
2
3
5
6
sed
그리고 난 부터 해야 해1에게5내 출력에는 다음을 포함해야 합니다.1하지만 *5*및 나머지 줄은 포함하고 싶지 않습니다.
내 파일에 다음이 포함되어 있는 경우5, 끝까지 남은 줄을 남겨야 해요.
메모:내 질문과 중복된 것으로 보이는 참조 링크를 보았습니다. 제목은 다음과 같습니다.일치하는 2개의 패턴 사이에 텍스트만 표시하지만 내 질문에 대답하지 않습니다. 거기에 대한 답변에는 두 번째 일치 항목이 파일에 없는 경우 처리할 방법이 포함되어 있지 않습니다.
답변1
sed '/1/,/5/!d;/5/d'
해당 줄 을 포함하는 줄부터 시작하여 그 줄(그 줄은 포함하지 않음) 1
이후의 다음 줄까지 반환합니다. 을 포함하는 줄 뒤에 5
포함하는 줄이 없으면 포함하는 첫 번째 줄부터 파일 끝까지 인쇄합니다 .5
1
1
해당 섹션이 모두 인쇄됩니다.
섹션이 하나만 있거나 첫 번째 섹션에만 관심이 있는 경우 다른 접근 방식을 사용할 수 있습니다.
sed -n '/1/,$!d; /5/q; p'
즉 sed
, 같은 줄에서 5를 찾거나 가 포함된 첫 번째 줄 이후에 읽기를 중지한다는 의미입니다 1
.