복잡한 사용법에 익숙하지 않지만 sed
지금은 이것이 필요합니다. 내용이 다음 패턴을 따르는 1.txt 파일이 있습니다.
sree@amby01:/home/sree : cat 1.txt
SSL
this first line
#comment line
second line
# third comment
# line nline
#ApiText
lkjfl
# my line
your line
sree@amby01:/home/sree :
이제 블록 사이의 주석 줄을 제거하고 싶은데 SSL....#ApiText
해당 줄을 삭제하면 안 됩니다.#ApiText
출력은 다음과 같아야 합니다.
SSL
this first line
second line
#ApiText
bash 쉘입니다. 주석 줄을 개별적으로 제거하는 방법은 알고 있지만 주석 뒤에 텍스트가 나오지 않는 한 주석 줄을 제거하는 방법은 모르겠습니다. 나는 그것을 사용할 수 밖에 없습니다 sed
.
답변1
여러 가지 방법이 있지만 그 중 하나는 다음과 같습니다.
sed '/SSL/,/#ApiText/{//b;/^#/d}' 1.txt
/SSL/,/#ApiText/
- 명령이 실행될 주소 범위//
- 이전 정규식이 있는 줄(SSL
또는#ApiText
- 발견된 줄)b
- 명령의 끝으로 이동합니다(의미아무것도하지 마세요)/^#/d
- 다음으로 시작하는 줄을 제거(인쇄하지 않음)#