SED 또는 AWK는 첫 번째 대시 이전과 마지막 대시 이후의 모든 항목을 제거합니다.

SED 또는 AWK는 첫 번째 대시 이전과 마지막 대시 이후의 모든 항목을 제거합니다.

나는 약간의 추가 내용이 포함된 개인 키 파일을 가지고 있으며 키의 텍스트만 원합니다.

그래서:

nonsense -----Begin Key-----
keep this1
keep this2 
keep this3
-----End Key----- nonsense

되어야 한다

-----Begin Key-----
keep this1
keep this2 
keep this3
-----End Key-----

편집: 실제 단어 "쓰레기"를 제거하고 싶지 않습니다. 핵심 텍스트 앞이나 뒤의 무엇이든 될 수 있습니다.

답변1

어때요?

sed -e '/Begin Key/ s/^[^-]*//' -e '/End Key/ s/[^-]*$//'

전임자.

$ sed -e '/Begin Key/ s/^[^-]*//' -e '/End Key/ s/[^-]*$//' file
-----Begin Key-----
keep this1
keep this2 
keep this3
-----End Key-----

답변2

awk '/-----(Begin Key|End Key)-----/{sub(/^[^\-]+|[^\-]+$/, "")}1' data
  • /-----(Begin Key|End Key)-----/시작 또는 끝 키 라인 찾기
  • {sub(/^[^\-]+|[^\-]+$/, "")}말도 안되는 일의 시작과 끝을 명확하게 하세요.
  • 1항상 인쇄

관련 정보