Wie lösche ich Zeilen, bei denen der angegebene Zeilenteil mehr als 100 Zeichen umfasst?

Wie lösche ich Zeilen, bei denen der angegebene Zeilenteil mehr als 100 Zeichen umfasst?

Ich weiß, dass ich Zeilen mit mehr als 100 Zeichen folgendermaßen löschen kann:

sed '/^.\{100\}..*/d'

Aber ich habe die folgende Beispielzeile:

<a href="http://xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</a><br>

Ich muss also nur die Zeilen löschen, in denen „YYY“ steht:

">Y...Y...Y</a><br>

ist länger als 100 Zeichen. Wie kann ich das machen?

Ich verwende OpenBSD.

Antwort1

grep -vE '">[^<>]{101,}</a><br>'

Um Zeilen zu entfernen, die mehr als 100 Nicht-<>-Zeichen zwischen a ">und a enthalten </a><br>.

Antwort2

Dasselbe wie oben (wenn ich richtig verstehe, was Sie tun möchten):

sed -e '/Y\{100\}/d'

Dies gleicht alle Zeilen ab, die hintereinander 100 Y enthalten, und löscht sie.

verwandte Informationen