2016-10-27 1 views
-1

Ich habe eine HTML-Datei, in der einige Zeilen mit <br> beginnen. Wenn es zwei in einer Reihe gibt, möchte ich die erste löschen. Es scheint, als ob dies funktionieren sollte ...sed, um erste aufeinanderfolgende Zeilen zu entfernen, die mit einem Muster beginnen

sed '/^<br>/{N;/^<br>/ s/^.*\n//}' 

... aber es nicht.

Edit:

Eingang:

<br>Here's a line I don't want. 
<br>Here's a line I do want. 
<a href="http://google.com">Google</a> 

Ausgang:

<br>Here's a line I do want. 
<a href="http://google.com">Google</a> 

Edit 2:

ich das Problem mit dem Befehl Arbeits Hälfte verengt haben die Zeit. Wenn Linie 1 und Linie 2 Start mit <br>, Zeile 1 ordnungsgemäß gelöscht, aber das Skript bewegt sich auf Linien 3 und 4, ohne sich vorher vergewissert 2 und 3.

+0

Bitte fügen Sie Beispieleingabe und Ihre gewünschte Ausgabe für diese Beispieleingabe zu Ihrer Frage hinzu. – Cyrus

+0

Wenn Sie nach zwei '
' s in einer Reihe suchen, warum nicht 'sed" s/^

/
/g "test.html'? – 1sloc

+0

Editiert für Eingabe/Ausgabe. – user1889034

Antwort

1

starten:

sed '/^<br>/N;{/\n<br>/D;}' file 

Wenn ^<br> gefunden, fügt N nächste Zeile zum Musterraum hinzu. Wenn diese nächste Zeile mit <br> beginnt, löscht den ersten Teil des Musterbereichs (dh die erste Zeile beginnend mit br).

Verwandte Themen