2016-08-05 4 views
0

sed를 사용하여 문자열의 일부분을 삭제하지만 sed에 사용 된 정규 표현식은 다른 프로그래밍 언어와 약간 다릅니다.sed를 사용하여 패턴 부분 유지하기

"{\cs6\f1\cf6\lang1024 little} G{\cs6\f1\cf6\lang1024 }EDFW, {\cs6\f1\cf6\lang1024 one two}i{\cs6\f1\cf6\lang1024 </span><span>} {\cs6\f1\cf6\lang1024 </span><span>}= {\cs6\f1\cf6\lang1024 </span><span>}G{\cs6\f1\cf6\lang1024 </span><span>}TOTW, {\cs6\f1\cf6\lang1024 </span><span>}i{\cs6\f1\cf6\lang1024 </span>}" 

내가 예를 들어, 공간 후 다음 어떤이 {\cs6\f1\cf6\lang1024} (({\의 STH) * (계속)}와 같은 패턴)와 같은 문자열을 삭제하고 유지하려면 : 다음은 해결해야 할 문장

sed 's/{[^\\.* (.*)}]*}/\1/g' 

해야 모습 출력 : "."

little GEDFW, one twoi</span><span> </span><span>=</span><span>G</span><span>TOTW, </span><span>i</span>

하지만 보인다

<span> 나는이 시도 공간을 포함하고 최소한의 일치를 잡으려고 노력하는 방식이 효과가 없었습니다. 누구든지 나를 도울 수 있습니까?

+1

에 오신 것을 환영합니다. 곧 [About] 및 [Ask] 페이지를 읽고 MCVE ([MCVE])를 빨리 만드는 방법을 읽어보십시오. 입력에서 원하는 출력을 정확하게 표시하십시오. 입력은 한 줄입니까? 입력에 나타나지 않는 문자 시퀀스 ('{\ cs6 \ f1 \ cf6 \ lang1024}')를 찾으려고합니다 (1024와 닫는 중괄호 사이에 공백과 span 태그가 있음). 그게 우리가 당신이 진짜로 뭘 추측하는지 어렵게 만듭니다. '\ cs6 \ f1 \ lang1024' 시퀀스는 입력에 여러 번 나타납니다. 한 번 또는 매번 나타날 때마다 처리해야합니까, 아니면 무엇을 처리해야합니까? –

답변

0

그것은 당신이 원하지 않는 부분 제거하기 쉽습니다 : 스택 오버플로

sed 's/{\\cs6\\f1\\cf6\\lang1024 *//g; s/}//g' input_file 
관련 문제