2010-03-04 25 views
6

Tôi đang cố gắng thêm định dạng cho tất cả/* TODO: ... */tags, nhưng tôi gặp sự cố trong khu vực nhiều dòng. Tôi có thể làm một dòng sed; nhưng đối với nhiều loại thuốc mê và lúng túng, tôi không biết.sed hoặc awk multiline thay thế

Làm cách nào để thực hiện việc này? Tôi cũng mở cửa. Đây là những gì tôi có cho đến nay.

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

thay thế:

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

với:

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

tại sao bạn muốn chèn html tags vào mã? làm việc trên một highlighter cú pháp? – akira

+0

vâng - tôi chỉ gặp rắc rối khi chuyển sang đa dòng> _ < –

+3

Ý nghĩa của 'int void main' là gì? –

Trả lời

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

đầu ra

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

cũng giống như một sidenote: '' và sau đó sử dụng một ontop phần css sẽ tốt hơn ("stylewise" :)). – akira

+0

Tôi phải có kiểu nội tuyến cho kiểu này. ;) –

+0

Tôi không biết GAWK nhưng, điều này không hoạt động vì vậy tôi sẽ không chấp nhận nó như là một câu trả lời. Tôi đã thực hiện nó với một REGEX thực sự dài để đảm bảo các trận đấu không phù hợp và chức năng gsub của ruby. –

Các vấn đề liên quan