다음 내용이 포함된 파일이 여러 개 있습니다.
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'
원래
-e
sed에게 다음 패턴을 사용하라고 지시/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
(빈 줄을 남겨두는 단점이 있는데, 이는 허용되지 않을 수 있습니다...)