Archiv verlassen und diese Seite im Standarddesign anzeigen : IF-Bedingung als verknüpfter Befehl
Servus,
will sowas vom Prinzip her machen:
while read line; do
if [ `echo "$line" | egrep -e "Pro" `]; then
echo "Pro ist enthalten in $line";
fi;
done < projcfg.tmp
Das Problem ist nur die If-Abfrage. Ich will schauen, ob in $line ein bestimmtes Wort vorkommt, wenn ja, soll irgendwas anderes passieren....aber ich bekomms ums Verrecken nicht hin!
clumsy
Ich denke, vor der "]" fehlt noch ein Leerzeichen.
Edit: und auch dahinter
Edit2: egrep -e gibt einen String zurück (die Zeile in der "Pro" vorkommt) - es sollte also eher grep -c "Pro" heißen (gibt die Anzahl der Zeilen zurück)
Edit3: oder noch besser: grep -q "Pro"
In diesem Falle brauchst du sogar gar nicht test (oder das alias [)
if echo $line | grep -q "Pro"; then
echo Pro ist in $line
fi
super, danke.
aber jetzt hab ich größeres Problem. Anscheinend entfernt "read line" Backslashes aus einer Zeile!
while read line; do
echo "LINE vor IF: \t $line"
if echo $line | grep -q "^CFG.*cfg$" ; then
echo "LINE nach IF: \t $line"
echo "line IF: $line"
fi
done < projcfg.tmp
wobei projcfg.tmp so aussieht:
[Project=Name Nummer 1]
CFG=P:\Pfad\des\Grauens\name1.cfg
[Project=Name Nummer 2]
CFG=P:\Pfad\des\Grauens\name2.cfg
[Project=Name Nummer 3]
CFG=P:\Pfad\des\Grauens\name3.cfg
Ergebnis:
LINE vor IF: CFG=P:PfaddesGrauensname1.cfg
LINE nach IF: CFG=P:PfaddesGrauensname1.cfg
usw.
Warum werden die Backslashes entfernt? Wie kann ich das vermeiden?
clumsy
If the -r option is given, this signifies `raw' input, and backslash escaping is disabled. Also "read -r line"
ne, geht leider nicht...
LINE vor IF: [Project=Name Nummer 1]
LINE vor IF: CFG=P:\Pfad\des\Grauens
ame1.cfg
LINE vor IF: [Project=Name Nummer 2]
LINE vor IF: CFG=P:\Pfad\des\Grauens
ame2.cfg
LINE vor IF: [Project=Name Nummer 3]
LINE vor IF: CFG=P:\Pfad\des\Grauens
ame3.cfg
mit meiner "richtigen" (also nicht dieser Bsp-Datei) sieht das noch um welten schlimmer aus, d.h. es fehlen Buchstaben, es gibt neue Zeilen und Tabs.
so wie´s aussieht, gelten newlines \n, tabs \t usw. weiterhin...was ich natürlich in der verarbeitung nicht brauchen kann...
Das liegt dann an deinem Echo. Das interpretiert \t und \n als Tab und newline.
Eigentlich sollte es das nur bei der Option -e tun. Welche Shell nutzt du denn?
(Versuch mal Option -E (groß E: escape disabled, klein e: escape enabled))
ist ein HP-UX-rechner. nutze die bash...
werd das -E mal testen, bin aber grad nicht davor ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.