이 857835 라인 파일을 가지고 다음과 같은 내용을 포함한다고 가정 해보십시오.
a1
rubbish1
rubbish2
rubbish3
rubbish4
a1
rubbish5
rubbish6
rubbish7
rubbish8
그리고 나는 모든 발행 수 제거 할 a1
및 (다음 줄 rubbish1
과 rubbish5
이 예에서). 어떻게합니까?
나는 grep 'a1' -v -A1
아무 소용이 없었지만 내 sed skillz는 정말 대단하지 않습니다 :}
이번에 Google fu가 나를 도와주지 못했습니다. 누군가 도와주세요!
답변
시험:
sed -e '/^a1$/,+1d' "filename"
이것은 / ^ a1 $ /에서 다음 줄로의 삭제를 의미합니다.
^와 $는 전체 행과 일치하므로 숨겨진 a1은 일치하지 않습니다.
답변
다음은 비 GNU에서 작동합니다 sed
( ,+1
주소 구문은 GNU 확장입니다).
sed -e '/^a1$/,/^/d' my_file >my_filtered_file
“정확하게 ‘a1’을 읽는 행에서 시작하여 행의 시작이 존재하는 다음 행 (예 : 다음 행)에서 끝나는 경우 삭제하십시오.”
다른 줄 수를 삭제하면 완전히 다른 스크립트가 필요하기 때문에 @asoundmove의 답변보다 확장 성이 떨어집니다.