2010-03-04 36 views
6

Ich versuche, Formatierung an alle/* TODO: ... */-Tags anhängen, aber ich habe Probleme in der Multi-Line-Bereich. Ich kann single line sed machen; aber für multiline sed und awk, weiß ich nicht.sed oder awk multiline ersetzen

Wie mache ich das? Ich bin offen für beides. Hier ist, was ich bisher habe.

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

ersetzen:

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

mit:

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

warum Sie HTML-Tags in den Code eingefügt werden soll? Arbeiten an einem Syntax-Highlighter? – akira

+0

yep - ich habe gerade Schwierigkeiten, es zu multiline zu bekommen> _ < –

+3

Was bedeutet die Bedeutung von 'int void main'? –

Antwort

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

Ausgang

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

nur als Nebenbemerkung: '' und dann eine CSS-Sektion ontop wäre besser ("stylewise" :)). – akira

+0

Ich muss Inline-Stile für diesen haben. ;) –

+0

Ich kenne GAWK nicht, aber das funktioniert nicht, also werde ich es nicht als Antwort akzeptieren. Ich habe es mit einem wirklich langen REGEX gemacht, um nicht-passende Matches und Rubys gsub-Funktion zu gewährleisten. –

Verwandte Themen