두 개의 특정 문자열 사이에서 텍스트 제거


10

아래와 같은 파일이 있습니다.

mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826
scr  PI Name: RRC Access Failures due to UU, Value: 0.13394141
prog PI Name: RRC Access Failures due to UU, Value: 0.16077702
sch PI Name: RRC Access Failures due to UU, Value: 0.11781933

PI까지 텍스트를 삭제하고 싶습니다 Value:. 나는 시도했다

sed '/<PI>/,/<\/Value:>/d' 

어떤 도움?

답변:



6

din 명령을 사용하면 sed전체 줄이 삭제됩니다. 또한 왜 당신이 <and를 사용하는지 잘 모르겠습니다 >. 아마도 당신은 그들을 혼동하고 \<하고 \>있음을 grep나타낸다 단어 경계에 사용? 이 경우 두 가지 유형의 단어 경계 (시작 및 끝)에 모두 sed사용 \b됩니다. 따라서 다음과 같이 작성할 수 있습니다.

sed -i 's/\bPI\b.*\bValue:\b//' your_file

견고성 perl을 높이기 .위해 첫 번째 항목 PI과 첫 번째 항목 사이의 텍스트 만 삭제하도록 지연 수량화에 사용 합니다 Value:. 물론 그것은 모두 사용 사례에 달려 있습니다.

perl -pi -e 's{ \b PI \b .*? \b Value: \b}{}x' your_file

1

아래 코드를 사용하여 패턴 사이의 여러 줄 (패턴이있는 줄 포함)을 제거하십시오.

sed "/PI/,/Value:/d" your_file

your_file을 직접 수정하려면 다음을 수행하십시오.

sed -i "/PI/,/Value:/d" your_file

여기에서 구별을 주목하십시오-이것은 범위 내의 을 삭제 하지만 질문은 두 문자열 사이의 텍스트 를 삭제하도록 요구합니다 .
Jeff Schaller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.