echo/printf und \?

P

pastors

Jungspund
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
 
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
 
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
 
pastors schrieb:
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

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

könnte so klappen
 
Nein, ich lese doch den Pfad direkt aus! Da kann ich nichts mehr dran ändern...

Mike
 
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
 
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
 
pastors schrieb:
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!!!
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Wie komme ich an den Inhalt des Inhalts einer Variable?

Grub Boot Menü - Windows 10 hinzufügen

Zeile für Zeile auslesen und Befehl ausführen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Zurück
Oben