1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
|
#!/bin/sh
removing_comments="0"; # arbeitsstatus
#erstmal alles außer dem Kopf der Datei nehmen und Leertasten und Tabs maskieren (sind Trennzeichen für "for")
for k in `cat "${1}" | sed -e 's/\//%22/' | sed -e 's/ /%20/g' | sed -e 's/\t/%21/g'`;
do
#echo $removing_comments
k=`echo "$k" | sed -e 's/%21/\t/g'| sed -e 's/%20/ /g' | sed -e 's/%22/\//'`
if [[ "$removing_comments" == "0" ]]
then
# wir prüfen fpr jede Zeile, ob ein Kommentar beginnt
comment=`echo "$k " | grep '/\*'`
if [[ "X" == "X$comment" ]]
then #wenn comment leer ist > Kein Kommentar, einfache Ausgabe
echo "$k"
else
#wenn comment nicht leer, dann
#schauen wir noch, ob der Kommentar in derselben Zeile aufhört
comment=`echo "$k" | grep '\*/'`
if [[ "X" == "X$comment" ]]
then
#wenn er nicht zu ende ist, löschen wir alles vom /* bis zum Zeilenende und switchen den Modus
line=`echo "$k" | sed -e 's/\/\*.*//'`
echo "$line"
let removing_comments="1";
else
#wenn comment nicht leer ist, ist der Kommenar da auch zu Ende und wir löschen ihn
line=`echo "$k" | sed -e 's/\/\*.*\*\///g'`
echo "$line"
fi
fi
else
# wenn wir im modus "Kommentare" sind, prüfen wir, ob er zu Ende ist.
comment=`echo "$k" | grep '\*/'`
#echo "$removing_comments:comment=$comment $k"
if [[ ! "X" == "X$comment" ]]
then
line=`echo "$k" | sed -e 's/.*\*\///'`
# echo "$line"
removing_comments=0;
fi
fi
done
|