sed截取特定行内的内容

很久没有做过sed相关的练习了,近几天遇到了这样的一个练习,要截取特定行内的内容,比如一个配置文件如下:

root@ubuntu:~# cat conf.ini  
{configure_a, [
    {10.10.10.1,0},
    {10.10.10.1,1},
    {10.10.10.1,2}
]}.
{configure_b, [
    {10.10.10.2,0},
    {10.10.10.2,1},
    {10.10.10.2,2}
]}.

需要获取的是configure_a里面的配置内容:

    {10.10.10.1,0},
    {10.10.10.1,1},
    {10.10.10.1,2}

我给出的方式是这样的:

sed -rn '/configure_a/{n;:a;N;/}\s*,\s*$/ba;p}' conf.ini  

思路如下:

1.如果匹配到configure_a,则进行下面的操作;
2.读下一行(为了排除{configure_a, [这行);
3.设置一个a标签;
4.a标签内的操作是N(多行模式,将下一行的内容读入缓存空间);
5.如果匹配到}\s*,\s*$($代表的是当行的结尾而不是整个缓存空间的结尾)则无条件跳回到标签a处执行;
6.如果上一步没有匹配,则将整个缓存空间的内容打印出来。