텍스트와 중괄호가 포함된 여러 줄 제거

텍스트와 중괄호가 포함된 여러 줄 제거

다음 내용이 포함된 파일이 여러 개 있습니다.

this is a test1
 {
test 123
test 456
test 789
}

this is a test2
 {
test 123
test 456
test 789
}

this is a test3
 {
test 123
test 456
test 789
}

단락을 삭제해야 합니다.

this is a test2
 {
test 123
test 456
test 789
}

중괄호 사이의 줄은 다를 수 있습니다(줄 수가 적거나 많음). 나는 다음과 같은 것을 시도했습니다.

sed -i 's|This is a test2 *.* !}||g' *

그리고

sed -i 's|This is a test2, !}||g' *

하지만 성공은 없어

답변1

무엇에 대해

sed -e '/this is a test2/,/}/d'

원래

  • -esed에게 다음 패턴을 사용하라고 지시
  • /this is a test2/,/}/this is a test2사이의 선을 선택하세요 .}
  • d삭제해

용법

 sed -e '/this is a test2/,/}/d' A > B
  • A 파일에서 B 파일로 sed 적용

    sed -i  -e '/this is a test2/,/}/d' A
    
  • A로 직접 편집

답변2

awk를 사용하는 간단한 방법:

awk '/test2/,/^}/{next}1' file > newfile

(빈 줄을 남겨두는 단점이 있는데, 이는 허용되지 않을 수 있습니다...)

관련 정보