sed或awk多行替换

rlb*_*usa 6 awk sed multiline

我试图将格式添加到所有/*TODO:...*/标签,但我在多行区域遇到问题.我可以做单线sed; 但对于多线sed和awk,我不知道.

我该怎么做呢?我愿意接受.这是我到目前为止所拥有的.

sed 's/\/\/\*[ \t]*TODO[ \t]*:.*/*\//<span style="color:#aaaaaa;font-weight:bold;">&</span>/g'
Run Code Online (Sandbox Code Playgroud)

替换:

int void main ( int h, char * argv[] )
  int a, b; /* TODO :
               - include libraries
               ...
            */
  foobar();
  /* TODO : fix missing {'s */
Run Code Online (Sandbox Code Playgroud)

用:

int void main ( int h, char * argv[] )
  int a, b; <span style="color:#aaaaaa; font-weight:bold;">/* TODO :
               - include libraries
               ...
            */</span>
  foobar();
  <span style="color:#aaaaaa; font-weight:bold;">/* TODO : fix missing {'s */ </span>
Run Code Online (Sandbox Code Playgroud)

gho*_*g74 5

gawk 'BEGIN{
  RS="*/"
  replace="<span style=\"color:#aaaaaa; font-weight:bold;\">"
}
/\/\* +TODO/{
    gsub(/\/\* +TODO/,replace" /* TODO")
    RT=RT "</span>"
}
{ print $0RT}
' file
Run Code Online (Sandbox Code Playgroud)

输出

$ ./shell.sh
int void main ( int h, char * argv[] )
  int a, b; <span style="color:#aaaaaa; font-weight:bold;"> /* TODO :
               - include libraries
               ...
            */</span>

  foobar();
  <span style="color:#aaaaaa; font-weight:bold;"> /* TODO : fix missing {'s */</span>
Run Code Online (Sandbox Code Playgroud)

  • 什么不起作用?简单地说“不起作用”并没有多大帮助。 (2认同)