我有一个这样的字符串:
zone "example.com" {
type slave;
file "db.example.com";
masters { x.x.x.x; };
};
zone "foo.com" {
type slave;
file "db.foo.com";
masters { x.x.x.x; };
};
...
我想删除特定区域。
我知道如果我有正则表达式后如何删除它:
sudo sed -i '$REGEX' /file/path
但我不太确定正则表达式本身。我知道开头是(zone "example.com" {)
,结尾会是(};\s};)
,但我如何在两者之间加入内容?
答案 0 :(得分:4)
sed -i '/example\.com/,/^$/d' filename
这将删除从包含“example.com”的第一行开始并以空行结束的范围内的行。
答案 1 :(得分:2)
你可以在sed中做这样的事情
{{1}}
答案 2 :(得分:0)
使用awk你可以使用空记录分隔符来处理这个问题,即awk -v name='example.com' -v RS= '!($0 ~ name)' zones
zone "foo.com" {
type slave;
file "db.foo.com";
masters { x.x.x.x; };
};
:
template<template<class...>class Z, class...T0s>
struct partial_apply {
template<class...T1s>
using result = Z<T0s...,T1s...>;
};
template<template<class...>class A, template<class...>class B>
struct same_template : std::false_type {};
template<template<class...>class A>
struct same_template<A,A> : std::true_type {};
template<class...>class Default {};
template<
template<class...>class AllocatorType=Default
>
class MemoryArena {
template<class T>
using MyAllocatorTemplate = std::conditional_t<
same_template<AllocatorType, Default>{},
DefaultAllocType<MemoryArena, T>,
AllocatorType<T>
>;
};