我有多个文件,其中包含以下内容:
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
将 sed 从 A 文件应用到 B 文件
sed -i -e '/this is a test2/,/}/d' A
直接编辑到A
答案2
使用 awk 的简单方法:
awk '/test2/,/^}/{next}1' file > newfile
(有留下空行的缺点,这可能不可接受......)