#@ 및 #@@ 등으로 표시된 텍스트 블록에서 일부 정보를 추출하려고 합니다. 예제 파일과 함께 아래 명령을 사용하면 작동하지만 -e로 연결하려고 하면 예상대로 작동하지 않습니다.
현재 명령(이상적이지 않음)
sed -n "/^#@/,/#@@/p" file | sed 's/[#@]*//'
재설계된 명령(작동하지 않음)
sed -en "/^#@/,/#@@/p" -e 's/[#@]*//' file
원하는 출력
text title
text line
text line
파일 형식
#
#
#@ text title
# text line
# text line
#@@
#
내가 뭘 잘못했나요?
답변1
주문하다
sed -en "/^#@/,/#@@/p" -e 's/[#@]*//' file
파일 -en
에 표현식을 적용하려고 하면 오류가 발생할 수 있습니다 . 다른 옵션과 결합 하려면 다음과 같이 표현식 매개변수를 like 뒤에 넣거나 완전히 분리해야 합니다.n
/^#@/,/#@@/p
-e
-e
-ne "/^#@/,/#@@/p"
-n -e "/^#@/,/#@@/p"
그런데 대체 명령을 적용하려는 것 같습니다.지정된 라인으로그리고그 다음에실제로는 표현식인 이를 인쇄하세요.
$ sed -n '/^#@/,/#@@/s/^#@*//p' file
text title
text line
text line
선행 공백을 제거하려면 다음을 수행하십시오.
$ sed -n '/^#@/,/#@@/s/^#[@ ]*//p' file
text title
text line
text line