Rufen Sie Inhalt zwischen zwei HTML-tags mit Bash
Ich brauche, um den HTML-Inhalt zwischen zwei bestimmten tags mit Hilfe eines bash-Skript.
Als ein Beispiel, mit dem HTML-code unten:
<html>
<head>
</head>
<body>
text
<div>
text2
<div>
text3
</div>
</div>
</body>
</html>
Verwendung der bash-Befehl/script, angesichts der Körper tag, wir würden erhalten:
text
<div>
text2
<div>
text3
</div>
</div>
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
nur-text-Verarbeitung ist nicht gut für html/xml-parsing. Ich hoffe, dies könnte Ihnen eine Vorstellung:
xmllint --xpath '//body/node()' f.html
.<div>
's, wie angeben eines Tags mit einem class-Attribut, zum Beispiel<div class="row content-wrapper"> give me this content and this tag in a file<\div>
- und schreiben Sie es aufa newfile withOrignalNameUpdate.nextExtension
habe ich versucht, dieses--output file
aber nicht wissen, wie man die original-Datei-Namen, können Sie auch aktualisieren Sie diese als Datei, die wir ausführen könnenMit sed in shell/bash, also brauchen Sie nicht installieren, etwas anderes.
... | sed '1d;$d'
Persönlich finde ich es sehr nützlich, um
hxselect
Befehl (oft mit Hilfe vonhxclean
) aus Paket-html-xml-utils. Letzteres behebt (manchmal gebrochen) HTML-Datei, um die korrekte XML-Datei und die erste erlaubt den Einsatz von CSS-Selektoren, um die Knoten(s), die Sie benötigen. Mit der Nutzung der-c
option, es Streifen umgebenden tags. Alle diese Befehle funktionieren auf stdin und stdout. Also in Ihrem Fall sollten Sie ausführen:bekommen, was Sie brauchen. Schlicht und einfach.
Vergessen Bash durch die Begrenzung, die Sie verwenden können, nokogiri als Befehlszeile util, wie bereits erläutert,hier.
Beispiel:
Andere Möglichkeit ist die Verwendung des multi-platform -
xidel
- Dienstprogramm (home-Seite auf SourceForge, GitHub-repository), die verarbeitet sowohl XML und HTML:BASH ist wohl das falsche Werkzeug für diese. Versuchen Sie, ein Python-Skript unter Verwendung der starken Schöne Suppe Bibliothek statt.
Wird es mehr Arbeit im Voraus, aber auf die Dauer (hier: nach einer Stunde), die Zeitersparnis, die für den zusätzlichen Aufwand.