Zum Inhalt springen

AWK Liste auswerten mit Leerzeichen im Dateinamen


Empfohlene Beiträge

Geschrieben

Hallo,

ich bekomme aus einem Programm ein Verzeichnislisting, ähnlich dem von "ls -l" generiert.

Nun muss ich ausschließlich den Dateinamen davon auslesen. Alles kein Problem,

solange keine Leerzeichen in diesem Dateinamen steht, erledigt das


cat /home/ftp/xxxx/.listing |grep ^- | awk '{print \$9}'

ohne probleme. Ist jedoch ein Leerezeichen enthalten, bringt der Befehl natürlich nur den Dateinamen bis zum ersten Leerzeichen :( Ich kann auch den Feldtrenner nicht ändern, da die anderen Spalten ja auch mit Leerzeichen getrennt sind. Ich bräuchte also eine Lösung, die je nachdem wieviele Leerzeichen im Datienamen enthalten sind, diesen aus 2 bis n Feldern zusammensetzt. Hier mal das Listing das ich erhalte.

drwxr-xr-x   2 pokerschau_comm ftpusers      120 Jan  9 15:52 .

drwxr-xr-x   7 pokerschau_comm ftpusers       65 Dec  6 20:58 ..

-rw-r--r--   1 pokerschau_comm ftpusers     2315 Jan  9 15:19 12_20088_1515_Pacip_ SD8-00.xml

-rw-r--r--   1 pokerschau_comm ftpusers     6106 Jan  9 15:52 188_2108_174_Ine_ S59.xml

Wäre klasse wenn mir jemand einen Tipp geben könnte!

Simon

Geschrieben

Hi,

ich würde auch den Weg gehen, die Leerzeichen aus den Dateinamen rauszubekommen - ist nämlich ganz schlechter Stil.

Falls nicht kommst du um Regular Expressions nicht drum rum.

Quasi ... alles nach dem 8ten Leerzeichen ist das was ich suche.

Ich bin mir jetzt aber nicht sicher, ob die AWK RegExp dies auch können, sind ja leider etwas beschränkt (hier kannst aber nachschauen)- mit Perl ist es ein Einzeiler, falls du umsteigen kannst.

ciao,

vic

Geschrieben

well ... ich würds einfach so machen $9 und $10 auszugeben

ist zwar dirty, aber da der dateiname eh der letzte eintrag in deinem listing ist isses wohl schnurps

falls es kein $10 gibt ... isses ja auch net schlimm :)

also:

cat /home/ftp/xxxx/.listing |grep ^- | awk '{print \$9 " "$10}'

Geschrieben

Hi,

Ich bräuchte also eine Lösung, die je nachdem wieviele Leerzeichen im Datienamen enthalten sind, diesen aus 2 bis n Feldern zusammensetzt.

naja ich geh mal aufgrund seiner Aussage davon aus, dass ihn das nicht weiterbringt.

ciao,

vic

Geschrieben

Sag beim cut doch einfach er soll nur das letzte Feld nehmen bis zum Ende. Der Teil davor sieht ja gleich aus bei allen Dateien. Schalter -f :). Ups war ja cat und nicht cut. Naja dann pack einfach noch ein cut dazwischen :)

Geschrieben

Hi,

welchen "delemiter" würdest du bei cut nehmen? Ich kenne keinen, der so flexibel ist und 1-n Leerzeichen akzeptiert. Lass mich aber gerne eines besseren belehren. Wenn dann müsste man das ganze vorher durch tr jagen und die mehrfachen Leerzeichen löschen. Problem ist dann aber wieder, dass man auch die Leerzeichen aus den Dateinamen löschen würde ...

ciao,

vic

Geschrieben

Hi,

vielleicht klappt es sehr sehr dirty mit

cat /home/ftp/xxxx/.listing |grep ^- |cut -c<Position of the first character of the filename>-

falls sich die erste Position des Dateinamen nicht verändert.

Bei mir hat es testweise geklappt, dennoch würde ich es dir nicht empfehlen, da sobald sich z.B. die Dateigrösse erheblich verändert auch der Anfangsbuchstabe verrutscht.

ciao,

vic

Geschrieben

so ich hab mal ein bisschen rumgetestet und eine sehr schöne lösung gefunden :)


cat /home/ftp/xxxx/.listing |grep ^- | awk -F ":" '{print $2}'| sed -r 's/^.{3}//'

als seperator nehm ich einfach das : der zeit, hab also dann noch die beiden minuten zahlen und ein leerzeichen vorm dateinamen, die ich dann mit dem sed wegschnibbel :bimei

Geschrieben
so ich hab mal ein bisschen rumgetestet und eine sehr schöne lösung gefunden :)


cat /home/ftp/xxxx/.listing |grep ^- | awk -F ":" '{print $2}'| sed -r 's/^.{3}//'

als seperator nehm ich einfach das : der zeit, hab also dann noch die beiden minuten zahlen und ein leerzeichen vorm dateinamen, die ich dann mit dem sed wegschnibbel :bimei
Hmm, oder so:

cut -d ':' -f '2' < /home/ftp/xxxx/.listing | cut -d ' ' -f 2-

Müßte bei einer großen Datei schneller sein, denke ich...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...