我想删除文件中字符串/*
和*/
之间的所有文本,其中字符串可能出现在不同的行上并围绕注释。比如我想删除它包含/*
和*/
之间的以下七行: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-多行注释 –
如果您知道在评论开始或结束时同一行中没有非评论代码,这并不难,但对于一般情况而言,这更加痛苦。 –