【问题标题】:Remove a specific function from a file with sed or awk使用 sed 或 awk 从文件中删除特定函数
【发布时间】:2017-11-22 18:48:05
【问题描述】:

由于自动代码扫描发现,我必须从 https://github.com/apache/cordova-plugin-file-transfer/blob/master/src/ios/CDVFileTransfer.m 的第 838 行到第 850 行删除自签名证书的功能。到目前为止,我已经想出按行号删除这些行

sed -i '' -e '838,850d' CDVFileTransfer.m

如果更改之前的任何代码,这当然是危险的。

我正在寻找一个 sed 表达式,它从以

开头的(Line 838) 行中删除所有内容
// for self signed certificates

到只有右括号的第一行(Line 850)

}

类似

sed -i '' -e '^"// for self signed certificates",^"}"d' CDVFileTransfer.m

这可能吗?

我用正则表达式试试运气:

sed -i '' -e '#"// for self signed certificates"*^{#' CDVFileTransfer.m

但它不匹配任何东西。

【问题讨论】:

    标签: awk sed


    【解决方案1】:
    sed -e '/^\/\/ for self signed certificates/,/^}$/d'
    

    sed -e '\@^// for self signed certificates@,/^}$/d' input
    

    为了清楚起见,我省略了-i,因为它不适用于所有版本的 sed。此外,sed 是一个流编辑器。如果你想编辑一个文件,你应该使用ed,它是sed所基于的文件的编辑器。个人观点,-i 是个糟糕的主意:如果你想覆盖一个文件,使用 shell 重定向或者写一个包装函数。

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2013-10-08
      • 2023-03-05
      • 2011-12-21
      • 1970-01-01
      • 2021-03-22
      • 2018-08-25
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多