使用sed或awk从文件中删除特定函数

时间:2017-11-22 10:37:22

标签: awk sed

由于自动代码扫描查找,我必须从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

但它并不匹配任何东西。

1 个答案:

答案 0 :(得分:1)

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

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

为了清晰起见,我省略了-i,因为它并不适用于所有版本的sed。此外,sed是一个流编辑器。如果要编辑文件,则应使用edsed-i所基于的文件的编辑器。个人意见,{{1}}是一个可怕的想法:如果你想覆盖一个文件,使用shell重定向或写一个包装函数。