Das ist eine ziemlich nervige, aber viel einfachere Aufgabe. dies Gemäß dieser guide schrieb ich:Entkernen Sie das kaufmännische Und (&) via XMLStarlet - Bugging &
#!/bin/bash
content=$(wget "https://example.com/" -O -)
ampersand=$(echo '\&')
xmllint --html --xpath '//*[@id="table"]/tbody' - <<<"$content" 2>/dev/null |
xmlstarlet sel -t \
-m "/tbody/tr/td" \
-o "https://example.com" \
-v "a//@href" \
-o "/?A=1" \
-o "$ampersand" \
-o "B=2" -n \
ich erfolgreich jede Verbindung aus der Tabelle extrahieren und alles wird richtig verkettet, jedoch anstelle der Wiedergabe der Ampersand als & ich erhalten diese am Ende jeder Link:
https://example.com/hello-world/?A=1\&B=2
Aber eigentlich ich war auf der Suche nach so etwas wie:
https://example.com/hello-world/?A=1&B=2
Die Idee ist es, das Zeichen mit einem Backslash \&
zu entkommen, so dass es ignoriert wird. Anfangs habe ich versucht, es direkt in -o "\&" \
anstelle von -o "$ampersand" \
zu platzieren und ampersand=$(echo '\&')
in diesem Fall zu entfernen. Immer noch das gleiche Ergebnis.
Im Wesentlichen durch den umgekehrten Schrägstrich zu entfernen gibt sie noch:
https://example.com/hello-world/?A=1&B=2
Nur, dass die \
hinter den &
entfernt wird.
Warum?
Ich bin sicher, es ist etwas Grundlegendes, das fehlt.
ist die Qualität Ihrer Antworten zu verbessern, sollten Sie einige Abtastwerteingang zusammen mit dem gewünschten Ausgang umfassen, so können wir mögliche Lösungen testen. –
Sie haben Recht. Ich werde deinem Rat folgen! Prost @TomFenech –