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

使用sed或awk从文件中删除特定函数,awk,sed,Awk,Sed,由于自动代码扫描查找,我必须从第838行到第850行删除自签名证书的功能。到目前为止,我已经按照行号删除了这些行 sed -i '' -e '838,850d' CDVFileTransfer.m 如果之前的任何代码发生更改,这当然是危险的 我正在寻找一个sed表达式,它可以删除以 // for self signed certificates 到只有右括号的第一行 } 大概是 sed -i '' -e '^"// for self signed certificates",^"}"d'

由于自动代码扫描查找,我必须从第838行到第850行删除自签名证书的功能。到目前为止,我已经按照行号删除了这些行

sed -i '' -e '838,850d' CDVFileTransfer.m
如果之前的任何代码发生更改,这当然是危险的

我正在寻找一个sed表达式,它可以删除以

// for self signed certificates
到只有右括号的第一行

}
大概是

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

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

sed -i '' -e '#"// for self signed certificates"*^{#' CDVFileTransfer.m
但它与任何东西都不匹配

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

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

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