Bash 在ubuntu中使用sed命令搜索和删除块

Bash 在ubuntu中使用sed命令搜索和删除块,bash,vim,sed,vi,replace,Bash,Vim,Sed,Vi,Replace,我想执行的是1-查找和2-删除(_c64)的整个定义块: unsigned long long\uuuuc64(unsigned int llvm\u cbe\u hi,unsigned int llvm\u cbe\u lo){ 未签名的long-long llvm_cbe_retval;/*地址公开本地*/ 未签名的长llvm_cbe_retval1; *(&llvm_cbe_retval)=(((((无符号长-长)(无符号整数)llvm_cbe_高))如果函数布局在所有文件中都完全相同,则

我想执行的是1-查找和2-删除(_c64)的整个定义块:

unsigned long long\uuuuc64(unsigned int llvm\u cbe\u hi,unsigned int llvm\u cbe\u lo){
未签名的long-long llvm_cbe_retval;/*地址公开本地*/
未签名的长llvm_cbe_retval1;

*(&llvm_cbe_retval)=(((((无符号长-长)(无符号整数)llvm_cbe_高))如果函数布局在所有文件中都完全相同,则可以尝试此操作

gvim -p *.c    // Open all relevant files in multiple tabs
然后执行这个

:bufdo %s/unsigned long long __c64\(.\+\n\)\+\(\n\)\+\(.\+\n\)\+}// | update

最后执行的“更新”将保存每个文件。

伙计们,当我发现定义是动态更改的时,我试图找出类似以下内容:

sed '/^unsigned long long __c64/,/}/d'
幸运的是,它确实起了作用

谢谢你的帮助


阿米尔

谢谢你的回复,我们没有像“sed-is/”这样的bash脚本吗我可以把它放在编译阶段的中间来自动完成?顺便问一下,它是不是删除第一个3行或所有6行块??因为我只能看到三“n”,这就是“+”的意思。它将删除在结尾括号中结束的整个块。谢谢,我明白了。但是为什么我不能用BASH使用这个脚本呢?类似于:sed-i的/unsigned long long\uu c64(+.\+\n)\+(.\+\n)\+}/'“$f”。它不会改变任何东西:|因为我检查它必须与sed逐行读取的差异一致,所以我想我需要另一个命令来执行任务,对吗?
sed '/^unsigned long long __c64/,/}/d'