簡體   English   中英

在ubuntu中使用sed命令搜索和刪除塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM