linux - 如何在 Tcl 中使用 sed 搜索带有大括号的模式

标签 linux sed tcl

例子:输入文件如下

 signal {   
    XX, yy,
    Zz 
    XX ck" {
        P { 10ps
            25ps
            100ps }
    }
    yy ck" {
        P { 10ps
            25ps
            100ps }
        }
    Zz ck" {
        P { 10ps
            25ps
            100ps }
        }
    "XX"+, "yy"+, "zz"
}

我需要的输出是,

   signal {    
        XX, yy,
        Zz 
        "XX"+, "yy"+, "zz"
    }

上面的例子是一个文件中的部分行,我应该使用 sed 命令在 tcl 中删除直到 6 行有花括号的模式。

在命令下面使用,

exec/bin/sed -e {xx ck"{/, +6d} -i 文件

它不起作用,它也删除了其他行 应该删除下面的东西,

       Zz ck" {
            P { 10ps
                25ps
                100ps }
            }
       XX ck" {
            P { 10ps
                25ps
                100ps }
          }
       yy ck" {
            P { 10ps
                25ps
                100ps}
            }

你能帮帮我吗?

最佳答案

当我使用双引号 ("...") 来转义 sed 表达式而不是使用花括号 ({...}} 时,我得到了想要的结果):

exec /bin/sed -e "/.. ck\" \{/,+4d" -i file

请注意,我还更改了表达式以仅删除 4 行。

关于linux - 如何在 Tcl 中使用 sed 搜索带有大括号的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48898741/

相关文章:

linux - 为 OpenWrt 编写和编译程序

linux - 在 Linux 上提取 TCP 往返时间 (RTT) 估计

linux - 在不换行的情况下将文本附加到文件

c - 使用 LSF/bsub 基础设施运行 Tcl_DoOneEvent 时 CPU 利用率高(~100%)

C:从 OpenSSL 套接字读取

bash - 每n行bash的平均值

linux - 如何从ip中提取前2个数字

Tcl/Tk : why is file ignored by inotify?

tcl - 从命令行获取TCL的版本?

c++ - MATLAB MEX C++ 文件编译错误 g++ command not found