我想刪除文件中字符串/*
和*/
之間的所有文本,其中字符串可能出現在不同的行上並圍繞註釋。比如我想刪除它包含/*
和*/
之間的以下七行:sed刪除不同行上兩個字符串之間的字符
/* "CyIHTAlgorithm.pyx":81
* @cython.wraparound(False)
* @cython.cdivision(True)
* cdef inline object IHTReconstruction2D(fType_t[:,:] data, # <<<<<<<<<<<<<<
* fType_t[:,:] residualFID,
* fType_t[:,:] CS_spectrum,
*/
我設法在弦上的同一行發生做到這一點使用的sed: sed -i.bak 's/\(\/\*\).*\(\*\/\)/\1\2/' test.txt
但我不知道如何該在同一個文件擴展到多行:
我也曾嘗試: sed -i.bak '/\/\*/{:a;N;/\*\//!ba;s/.*\/\*\|\*\/.*//g}' test.txt
以下的想法在這裏(Extract text between two strings on different lines)
這種德 - 在開頭處輸入/*
,而輸入*/
但不輸入中間文字。
看看你的sed的版本有'-z'選項,這將允許NUL是行分隔符,而不是換行... – Sundeep
相關http://stackoverflow.com/questions/13061785/remove-多行註釋 –
如果您知道在評論開始或結束時同一行中沒有非評論代碼,這並不難,但對於一般情況而言,這更加痛苦。 –