PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : awk-Script zum laufen bringen



ninette111
15-09-2005, 10:42
Hallo!

Ich bin gerade dabei ein awk-Script als Filter in Doxygen (ein Werkzeug zur automatischen erstellung von Dokumentationen zu einem Quellcode) einzubauen. Dabei ist mir folgendes aufgefallen:

wenn ich mein script so aufrufe:

sh filter.sh

Wobei filter.sh so aussieht

#!/bin/sh
awk '{ if($0 ~ /^["\t"| ]*\/\*\*/) {
comment=1;
mycomment=" ";
printcomment=0;
}; if($0 ~ /@since\ 2\.6/) {
printcomment=1;
}; if (comment==1) {
mycomment=mycomment "\n" $0;
}else {
print $0;
}; if($0 ~ / \/$/) {
comment=0;
if(printcomment==1) {
print mycomment;
}else {
printcomment=0;
};
}; }' Font.hpp > test5.hpp


..dann funktioniert alles, und macht genau das richtige.

Wenn ich allerdings mein script mit

awk -f filter.awk Font.hpp > test5.hpp

aufrufe, mit folgender datei filter.awk

]#!/bin/awk
{ if($0 ~ /^["\t"| ]*\/\*\*/) {
comment=1;
mycomment=" ";
printcomment=0;
} if($0 ~ /@since\ 2\.6/) {
printcomment=1;
} if (comment==1) {
mycomment=mycomment "\n" $0;
}else { print $0;}
if($0 ~ / \/$/) {
comment=0;
if(printcomment==1) {
print mycomment;
}else {
printcomment=0; }} }


Dann bekomme ich plötzlich sehr viele Parser-Errors (meist " ^ invalid char ' ' in expression:2:")
". Außerdem erkennt er keine Zeilenumbrüche , weil das für ihn ebenfalls invalid characters sind. Warum ist denn das? Wie ist es möglich das Script auf die 2. Variante zum laufen zu bringen (so bräuchte ich es nämlich für Doxygen).

Bitte um Tipps!

LG
Nine.

PS: Die Zeilenumbrüche in den Scriptdateien habe ich nur zur besseren Lesbarkeit eingefügt!

Romanday
15-09-2005, 18:27
Hallo!

Ich bin gerade dabei ein awk-Script als Filter in Doxygen (ein Werkzeug zur automatischen erstellung von Dokumentationen zu einem Quellcode) einzubauen. Dabei ist mir folgendes aufgefallen:

wenn ich mein script so aufrufe:

sh filter.sh

Wobei filter.sh so aussieht

#!/bin/sh
awk '{ if($0 ~ /^["\t"| ]*\/\*\*/) {
comment=1;
mycomment=" ";
printcomment=0;
}; if($0 ~ /@since\ 2\.6/) {
printcomment=1;
}; if (comment==1) {
mycomment=mycomment "\n" $0;
}else {
print $0;
}; if($0 ~ / \/$/) {
comment=0;
if(printcomment==1) {
print mycomment;
}else {
printcomment=0;
};
}; }' Font.hpp > test5.hpp


..dann funktioniert alles, und macht genau das richtige.

Wenn ich allerdings mein script mit

awk -f filter.awk Font.hpp > test5.hpp

aufrufe, mit folgender datei filter.awk

]#!/bin/awk
{ if($0 ~ /^["\t"| ]*\/\*\*/) {
comment=1;
mycomment=" ";
printcomment=0;
} if($0 ~ /@since\ 2\.6/) {
printcomment=1;
} if (comment==1) {
mycomment=mycomment "\n" $0;
}else { print $0;}
if($0 ~ / \/$/) {
comment=0;
if(printcomment==1) {
print mycomment;
}else {
printcomment=0; }} }


Dann bekomme ich plötzlich sehr viele Parser-Errors (meist " ^ invalid char ' ' in expression:2:")
". Außerdem erkennt er keine Zeilenumbrüche , weil das für ihn ebenfalls invalid characters sind. Warum ist denn das? Wie ist es möglich das Script auf die 2. Variante zum laufen zu bringen (so bräuchte ich es nämlich für Doxygen).

Bitte um Tipps!

LG
Nine.

PS: Die Zeilenumbrüche in den Scriptdateien habe ich nur zur besseren Lesbarkeit eingefügt!

Der weiße Schimmel wurde doppelt gepoppelt.:D
Es reicht aus, den Interpreter nur 1x aufzurufen.