Ich habe eine HTML-Datei. Ich möchte alle Zeilen entfernen, die nicht mit beginnen <tr>
.
Ich habe es versucht:
cat my_file | sed $'
s/^[^tr].*//
' | sed '/^$/d'
aber es löschte alle Zeilen.
text-processing
sed
Michael Durrant
quelle
quelle
grep
.s/^[^tr]...
stimmt mit Zeilen überein, die mit einem anderen Zeichen alst
oder beginnenr
. Eckige Klammern sind ein Zeichenbereich in einem regulären Ausdruck.Antworten:
Versuchen Sie dies mit GNU sed:
oder
quelle
!d
besonders nützlich, weil Sie damit einen anderen sed-Befehl in den Ausdruck schreiben können, während derp
einzige die Übereinstimmung druckt, der nächste Befehl jedoch die Eingabe nicht geändert hat.Der Teil dazwischen
/
ist ein regulärer Ausdruck. Derd
Befehl löscht übereinstimmende Zeilen.Update: Ups, tut mir leid, ich habe gesehen, dass du NICHT gesagt hast. Damit
Wo
!
negiert der Sinn des Spiels.quelle
Wenn es sein muss
sed
:-i
Bearbeitet die Datei an Ort und Stelle,-n
verhindert , dasssed
alle Zeilen gedruckt werden. Der reguläre Ausdruck bedeutet , dass alle Zeilen,^
mit<tr>
denen begin (p
) beginnt, übereinstimmen und diese Zeilen gedruckt werden ( ).Mit
grep
:Mit
-E
grep interpretiert erweiterte reguläre Ausdrücke.Mit
awk
:Oder rein
bash
:Der
[[
is bashs interne bedingte Ausdruck. Wir vergleichen$l
mit dem regulären Ausdruck und wenn es erfolgreich ist (&&
), drucken wir die Zeile mitecho
.quelle
"$l"
. Und Sie setzen es als erstes Argument inecho
die Befehlszeile, sodass Sie ein Problem haben, wenn es mit a beginnt-option
. (Verwenden Sieprintf '%s\n' "$l"). Also, shell
read` muss jeweils ein Byte lesen, daher ist es sehr langsam. Die Verarbeitung von Textdateien in reiner Bash ist normalerweise keine gute Wahl, es sei denn, Sie wissen, dass Ihre Datei sehr klein ist.Die einfachste und einfachste Antwort wäre:
Dadurch wird die Datei nur mit den Zeilen ausgedruckt, die beginnen. Dies kann hilfreich sein, wenn Sie die Datei nicht direkt ändern möchten (wie bei sed).
Wenn Ihnen das gefällt, was Sie in der Ausgabe sehen, können Sie es einfach in eine Datei mit ausdrucken
> file
In diesem Fall sparen Sie einige Zeit beim Sichern Ihrer Datei, bevor Sie einige Befehle ausführen.
quelle