quick and dirty sed-skript fuer c-kommentare gesucht.

dettus

Bicycle User
hey!

hat einer von euch mal eben auf die schnell ein sed-skript zur hand, was mir saemtliche c-kommentare aus einem quellcode loescht? also alles, was in einer zeile nach // kommt und was ueber mehrere zeilen zwischen /* */ steht?
(manchmal auch in einer zeile, so wie das da:)

Code:
if (c>=32) /* ZEICHEN DRUCKBAR */ do_stuff(); else /* DOCH NICHT */ do_otherstuff();
 
Ich weiss zwar nicht, ob man das adaptieren kann, aber versuche es doch mal mit:

grep -v '^(//|/*)' /home/dettus/datei.c (oder wo dann auch immer)

Steven
 
dettus schrieb:
hat einer von euch mal eben auf die schnell ein sed-skript zur hand, was mir saemtliche c-kommentare aus einem quellcode loescht?

Wenn es Dir bis morgen Abend reicht: ich glaube, ich habe im Buero irgendwo so ein Teil herumliegen. IIRC habe ich das aber mit awk(1) erschlagen.

So, hier das Teil, das ich vor ein paar Wochen kurzfristig aus dem Aermel schuetten musste, zusaetzlich mit einem "comment normalizer" in der ersten Regel:

Code:
#!/usr/bin/awk -f
#
# Strip comments and blank lines of Java[tm], C, or C++ sources files.
/\/\*/                                  { gsub(/\/\*[^*]*\*[^\/]/, "/*") }
!comment && /\/\*.*\*\//                { gsub(/\/\*[^*]*\*\//, "") }
comment && /\*\//                       { comment = 0; gsub(/.*\*\//, "") }
!comment && /\/\*/                      { comment = -1; gsub (/\/\*.*/, "") }
!comment && /\/\//                      { gsub(/\/\/.*/, "") }
comment <= 0 && !/^[[:blank:]]*$/       { print }
comment == -1                           { comment = 1 }

Als Nebeneffekt werden auch leere Zeilen entsorgt (ich brauchte das Teil, um die effektiven lines of code unserer Software zu ermitteln). Ich denke, das Script ist weitgehend selbsterklaerend. :D
 
Zuletzt bearbeitet:
Zurück
Oben