reandy
Goto Top

Ausdruck am Ende einer Zeile löschen

Bisher habt Ihr mir IMMER weiterhelfen können, doch bei diesem "Problem" komm ich nicht weiter!

Hallo an alle!

Mein erster Beitrag hier!


Folgendes Problem scheint für mich unlösbar, warscheinlich ist die Lösung aber einfacher als ich denke!

Ich möchte mit einer Batch ein txt File nach einem Ausdruck am Ende jeder Zeile durchsuchen und diese Zeilen löschen.
Mein bisheriger Versuch u.a

type "original.txt" |findstr /e /v "org" > "bearbeitet.txt"

in der original.txt befinden sich beispielsweise Zeilen mit Inhalten wie
111.com
111.com/
11111111.com
22222.org
22.org/

in der bearbeitet.txt sollen sich nur Zeilen befinden wie
111.com
111.com/
11111111.com

Also alle Zeilen die AM ENDE (deshalb auch mein Versuch mit /e) org enthalten, löschen

Wie komm ich da weiter?

danke und liebe Grüße
reandy

Content-Key: 180292

Url: https://administrator.de/contentid/180292

Printed on: April 19, 2024 at 05:04 o'clock

Member: bastla
bastla Feb 09, 2012 at 12:24:26 (UTC)
Goto Top
Hallo reandy und willkommen als Mitglied!

Versuch es so:
<code t<pe="plain">findstr /i /e /v "org org/" original.txt>bearbeitet.txt

Grüße
bastla
Member: pieh-ejdsch
pieh-ejdsch Feb 09, 2012 at 13:14:38 (UTC)
Goto Top
moin reandy und bastla,
und Dir reandy auch ein Willkommen im Forum.

Und falls Du mal mir regulären Ausdrücken arbeiten möchtest ...
findstr /i /r /v "org[//]*$" original.txt>bearbeitet.txt  

Und wenn in der letzten Zeile die Zeilenschaltung fehlt, fährst Du mit dem
type "original.txt" |findstr /i /r /v "org/*$" > "bearbeitet.txt"
... wie Du warscheinlich schon Festgestellt hast, besser.
Dabei bleibt es gleich ob Du die Option /e oder den /regulären Ausdruck $ für Zeilenende benutzt.

Gruß Phil
Member: reandy
reandy Feb 09, 2012 at 15:01:17 (UTC)
Goto Top
Danke euch beiden, fast hab ichs am Laufen wie ich es mir vorstelle!!

Kann ich diesen Befehl auch mehrmals hintereinander verwenden?
> type "original.txt" |findstr /i /r /v "org[//]*$" > "bearbeitet.txt"  
> 

also so:
> type "original.txt" |findstr /i /r /v "org[//]*$" |findstr /i /r /v "com[//]*$" > "bearbeitet.txt"  
> 

Nach einem Versuch funktionierte es, dass die Zeilen auf "org" verschwinden, aber Zeilen endend auf "com" blieben.
Member: bastla
bastla Feb 09, 2012 at 15:03:53 (UTC)
Goto Top
Hallo reandy!

Sollte so zu machen sein:
type "original.txt" |findstr /i /r /v "org/*$" |findstr /i /r /v "com/*$" > "bearbeitet.txt"
Grüße
bastla
Member: reandy
reandy Feb 09, 2012 at 15:13:34 (UTC)
Goto Top
Ja, mein Kommando zuvor war das Selbe... nur irgendwie hab ich einen Fehler gemacht, nun gehts aber!!

Vielen Dank!!!

PS: ich war auch auf der Suche nach einer Möglichkeit Tabulatoren am Ende einer Zeile zu löschen, und konnte nirgendwo eine Lösung finden.

Ich hab nun den <more> Befehl wiederentdeckt
und so geht es:

more /T0 "mittabulator.txt" "ohnetabulator.txt"

In der Hilfe zu <more> steht alles beschrieben!

lg reandy
Member: pieh-ejdsch
pieh-ejdsch Feb 09, 2012 at 15:15:39 (UTC)
Goto Top
hallo bastla,

heute immer etwas länger ...

@reandy
Die beiden Findstrings lassen sich auch zu einem Zusammenziehen (so wie es Bastla schon ganz oben gezeigt hat
type "original.txt" |findstr /i /r /v "org/*$ com/*$" > "bearbeitet.txt"

Gruß Phil
Member: bastla
bastla Feb 09, 2012 at 15:20:17 (UTC)
Goto Top
Hallo reandy!
In der Hilfe zu <more> steht alles beschrieben!
Manchmal ist "alles" aber noch nicht die ganze Wahrheit - dort steht zB auch
  +n        Beginnt mit der Anzeige der ersten Datei in Zeile n.
- es steht aber nicht dabei, dass die Zählung bei Zeile 0 beginnt ... face-wink

Grüße
bastla
Member: bastla
bastla Feb 09, 2012 at 15:21:42 (UTC)
Goto Top
@ph
heute immer etwas länger ...
Das geht anscheinend nach dem Prinzip "je kürzer (gelesen), desto länger" ...

Grüße
bastla