PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : echo/printf und \?



pastors
04.02.2004, 10:31
Hallo,
ich muss eine Windowstextdatei weiterverarbeitn. Mein Skript steht soweit nur hab ich massive Problem mit dem Backslash! Echo und auch printf interpretieren diesen nicht!

Als beispiel:

var1="c:\winnt\system32\wordpad.exe"
echo $var1

liefert mir c:winntsystem32wordpad.exe

In den Manuals hab ich bereits nachgekuckt... kann mir jemand bei diesem Prob weiterhelfen?

Mike

JoBi
04.02.2004, 10:45
Geht bei mir auch so.
Aber probier's doch mal:
var1='c:\winnt\system32\wordpad.exe'
echo $var1

Ich benutze die bash, vielleicht liegt's ja daran.

Gruß, Jobi

pastors
04.02.2004, 12:08
Hi,
ich nehme auch die bash. Das Problem ist, ich lese die Daten von einer Textdatei ein. Jede Zeile speichere ich in eine Variable. Diese gebe ich mittels echo aus und entscheide, ob gut oder schlecht.

Danke
Mike

ookami
04.02.2004, 12:20
Hallo,
ich muss eine Windowstextdatei weiterverarbeitn. Mein Skript steht soweit nur hab ich massive Problem mit dem Backslash! Echo und auch printf interpretieren diesen nicht!

Als beispiel:

var1="c:\winnt\system32\wordpad.exe"
echo $var1

liefert mir c:winntsystem32wordpad.exe

In den Manuals hab ich bereits nachgekuckt... kann mir jemand bei diesem Prob weiterhelfen?

Mike



var1="c:'\'winnt'\'system32'\'wordpad.exe"
echo $var1


könnte so klappen

pastors
04.02.2004, 16:26
Nein, ich lese doch den Pfad direkt aus! Da kann ich nichts mehr dran ändern...

Mike

JoBi
04.02.2004, 18:39
Laß Dir doch nicht alles aus der Nase ziehen und fang ein bischen früher mit deinem Problem an. Vielleicht kann man ja deine Datei auch ganz anders abarbeiten.

Jobi

pastors
05.02.2004, 16:16
Also, in der Datei steht sowas ähnliches:

c:\winnt\xxx\xxx\xxx\a.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\b.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\c.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\d.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\e.tmp ist vollgelaufen
Bitte löschen!!!

mich interessiert nun nur das e.tmp. Den dies muss ich löschen.
Mit den regulären Ausdrücken kenne ich mich nicht gut aus. Vielleicht geht es mit sed.

Mike

bluelupo
13.02.2004, 19:11
Also, in der Datei steht sowas ähnliches:
[...]
c:\winnt\xxx\xxx\xxx\d.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\e.tmp ist vollgelaufen
Bitte löschen!!!

mich interessiert nun nur das e.tmp. Den dies muss ich löschen.
Mit den regulären Ausdrücken kenne ich mich nicht gut aus. Vielleicht geht es mit sed.
Mike

hallo mike,

sed ist dein feund ;-)

sed '/c:\\winnt\\xxx\\xxx\\xxx\\e\.tmp ist vollgelaufen/d' urspruengliche_datei > verarbeitungs_datei

...dann hast du alle zeilen deiner urspruenglichen datei in der nicht dein suchstring vorkommt in "verarbeitungs_datei". der backslash ist zum maskieren des \ und . notwendig.

ergebnis sieht so aus:
c:\winnt\xxx\xxx\xxx\a.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\b.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\c.tmp ist vollgelaufen
Bitte löschen!!!
c:\winnt\xxx\xxx\xxx\d.tmp ist vollgelaufen
Bitte löschen!!!
Bitte löschen!!!