2016-07-29 25 views
1

我是sed新手,我無法設法使用它來刪除所有';'字符在C++文件的註釋中,即開始或包含字符串「//」的行(我已經將「/ * ... * /」註釋轉換爲「// ...」註釋)。刪除所有發生的';'在C++的意見與SED

例如:

// lorem; ipsum ; test 
int a; // 1 ; 2 ; 3 ; 

我想有:

// lorem ipsum test 
int a; // 1 2 3 

對於我的C++文件的任何評論。

********* ********* EDIT

這裏是在兩個步驟中與SED的溶液。有答案的AWK解決方案也可用。

  1. 換上了新行的所有註釋:sed 's/\/\//\n\/\//g'
  2. 刪除 ';'僅在以「//」開頭的行上:sed '/^\/\// s/;//g'

回答

0

AWK很簡單。創建一個文件r.awk

function process(s) { 
    gsub(";", "", s) 
    return s 
} 

{ 
    sep = "//"; ns=length(sep) 
    m = match($0, sep) 
    if (!m) {print; next} 

    body = substr($0, 1, m-1) 
    cmnt = substr($0, m+ns ) 

    print body sep process(cmnt) 
} 

用法:

awk -f r.awk input.file 
+0

謝謝,這是AWK的確簡單。 我最終設法用SED分兩步完成它: 1.把所有註釋放在一個新行上:'sed's/\/\ // \ n \/\ // g'' 2.刪除' ;」僅限於以「//」開頭的行:'sed'/^\/\ // s /; // g'' – Iwaa