Spezifische Zeilen aus Textdatei entfernen

instinctless
Goto Top
Hallo Community, ich benötige eure Hilfe.
Ich habe eine Textdatei die so aufgebaut ist

Es gibt also am Zeilenanfang einen Bezeichner A1 - Z99.
Wie oben zu sehen gibt es aber auch Zeilen wo nur der Bezeichner vorhanden ist (E6), dahinter aber keine Daten stehen.
Wie bekomme ich es hin, dass genau jene Zeilen aus der Datei entfernt werden?

Content-Key: 2811012095

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

Ausgedruckt am: 28.06.2022 um 21:06 Uhr

Mitglied: TK1987
TK1987 17.05.2022 um 12:20:29 Uhr
Goto Top
Moin,

mit Powershell und ein bisschen Regex ein Kinderspiel:

Powershell Leitfaden für Anfänger
Regex Tutorial

Gruß Thomas
Mitglied: colinardo
Lösung colinardo 17.05.2022 aktualisiert um 12:23:40 Uhr
Goto Top
Servus.
Da das hier in der Kategorie Linux gepostet wurde gehe ich mal von bash/sh aus (auch wenn Powershell unter Linux natürlich auch funktioniert Thomas aber eben nicht out of the box :-) face-smile)
Grüße Uwe
Mitglied: TK1987
TK1987 17.05.2022 aktualisiert um 12:29:49 Uhr
Goto Top
Moin Uwe,

Zitat von @colinardo:
Da das hier in der Kategorie Linux gepostet wurde gehe ich mal von bash/sh aus
Stimmt, hab ich glatt übersehen (im Ticker stehen leider die Tags nicht mit dabei).

Gruß Thomas
Mitglied: instinctless
instinctless 17.05.2022 aktualisiert um 13:08:38 Uhr
Goto Top
Ganz hervorragend.
Ich bin noch nicht so der Regex Spezi.
Kannst du mir vllt noch erklären, was
macht?
$ steht ja für "bis zum Ende"
beim \s* spekuliere ich auf, hau alles weg bis $.
Ist das korrekt?
Mitglied: TK1987
TK1987 17.05.2022 aktualisiert um 13:20:24 Uhr
Goto Top
Moin,

\s beinhaltet Leerzeichen, Tabs, Zeilenümbrüche und Carriage Returns
* ist eine Mengenangabe und bedeutet 0 oder mehr (bis es nicht mehr zutrifft).

Mit anderen Worten, wenn hinter der gesuchten Zeichenkette nur noch Leerzeichen oder ähnliches folgen, wird die Zeile auch ausgelassen.

Gruß Thomas
Mitglied: colinardo
colinardo 17.05.2022 aktualisiert um 14:37:42 Uhr
Goto Top
\s* = Von mir gerne "Spacemonkey" genannt :-) face-smile. Habe ich mir hier im Forum angewöhnt da es hier immer wieder mal Kandidaten gibt die Ihre Logs mit Batch schreiben und da dann am Ende unwissend Spaces in die Zeilen echo'n.
Mitglied: TK1987
TK1987 17.05.2022 um 14:54:29 Uhr
Goto Top
Zitat von @colinardo:
\s* = Von mir gerne "Spacemonkey" genannt :-) face-smile. Habe ich mir hier im Forum angewöhnt da es hier immer wieder mal Kandidaten gibt die Ihre Logs mit Batch schreiben und da dann am Ende unwissend Spaces in die Zeilen echo'n.
Je nachdem, welches Programm man verwendet (oder mit welchen Parameter), muss man damit allerdings vorsichtig sein.
Ich bin damit z.B. bei Notepad++ schon ein paar mal auf die Nase gefallen, bei "\s*$" sind dann nämlich die Zeilenumbrüche mit futsch 😉

grep und sed verabeiten die Daten Zeilenweise, solange man den Parameter -z nicht angibt, daher geht das hier natürlich. Andernfalls müsste man sonst etwa "[ \t]*" verwenden, um nur Leerzeichen und Tabs zu berücksichtigen.

Gruß Thomas
Mitglied: colinardo
colinardo 17.05.2022 aktualisiert um 15:01:12 Uhr
Goto Top
Jepp, Regex nimmt einem wie üblich auch je nach Engine jede Kleinigkeit übel also immer schön die Flags beachten. Deswegen "Affe" der springt auch mal gerne wenn man ihn lässt ;-) face-wink.