2010-03-04 10 views
6

모든/* TODO : ... */tags에 서식을 추가하려고하지만 여러 줄 영역에서 문제가 있습니다. 나는 한 줄의 sed를 할 수있다. 하지만 여러 줄을 sed 및 awk, 나는 모르겠다.sed 또는 awk multiline 바꾸기

어떻게하면됩니까? 나는 어느 쪽이든 열려 있습니다. 여기까지 내가 지금까지 가지고있는 것이있다.

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

대체 :와

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

:

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> 
+0

은 왜 코드로, HTML 태그를 삽입 할 수 있습니까? 구문 형광펜 작업? – akira

+0

예 - 다중 행으로 가져 오는 데 어려움이 있습니다> _ < –

+3

'int void main'의 의미는 무엇입니까? –

답변

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

출력

$ ./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> 
+1

그냥 사이드 바로 : ''그리고 CSS 섹션 ontop을 사용하면 더 좋을 것입니다 ("stylewise":)). – akira

+0

인라인 스타일이 있어야합니다. ;) –

+0

나는 GAWK를 모르지만 이것은 작동하지 않으므로 대답으로 받아들이지 않을 것입니다. 결국 Nongreedy match와 ruby의 gsub 기능을 보장하기 위해 정말 긴 REGEX로 끝내게되었습니다. –

관련 문제