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

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

다음과 같은 파일이 있습니다.

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' 

도움이 필요하세요?

답변1

PIfrom 의 모든 항목을 빈 문자열로 바꿉니다.Value:

sed 's/PI.*Value://'

답변2

din 명령을 사용하면 sed전체 줄이 삭제됩니다. 또한 왜 <and 를 사용했는지 잘 모르겠습니다 >. 어쩌면 당신은 단어 경계를 나타내는 데 사용되는 및 와 혼동하고 있습니까 \<? 이 경우 두 가지 유형의 단어 경계(시작 및 끝)의 목적을 알아야 합니다. 따라서 다음과 같이 작성할 수 있습니다.\>grepsed\b

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

견고성을 높이기 위해 지연 양자화를 사용하여 perl첫 번째 발생과 첫 번째 발생 .사이의 텍스트 만 제거합니다. 물론 이는 모두 사용 사례에 따라 다릅니다.PIValue:

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

답변3

패턴 사이의 여러 줄(패턴이 있는 줄 포함)을 제거하려면 아래 코드를 사용하세요.

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

your_file을 직접 수정하려면 다음을 수행하세요.

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

관련 정보