[英]Search and delete a block using sed command in ubuntu
我想執行的操作是1-查找並2-刪除(__c64)的整個定義塊:
unsigned long long __c64(unsigned int llvm_cbe_hi, unsigned int llvm_cbe_lo) {
unsigned long long llvm_cbe_retval; /* Address-exposed local */
unsigned long long llvm_cbe_retval1;
*(&llvm_cbe_retval) = (((((unsigned long long )(unsigned int )llvm_cbe_hi)) << 32ul) | (((unsigned long long )(unsigned int )llvm_cbe_lo)));
llvm_cbe_retval1 = *(&llvm_cbe_retval);
return llvm_cbe_retval1;
}
項目中除一個.c文件外的所有文件。 由於在從.o到可執行文件的編譯階段,我得到了錯誤“ __c64的多個定義”,因此我想刪除其中的所有一個,以便解決該問題。
有任何想法嗎?
問候,
阿米爾
如果所有文件中的功能布局完全相同,則可以嘗試此操作
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'
幸運的是,它確實起作用了。
感謝所有幫助。
阿米爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.