Ich habe den folgenden Grep-Befehl in sed weitergeleitet, um ein Elementnamenattribut zu finden und das Sed-Ergebnis in einer Namensvariablen zu speichern.
name=$(grep -E "<element.*name=.*/>" "$F" | sed -e "s/.*<element.*name=\(.*\)\/>.*?/\1/")
Beispieldaten -
<element name="Barium"/>
Gewünschte Ausgabe -
Barium
Tatsächliche Ausgabe -
<element name="Barium"/>
Ich bin ein wenig verwirrt, wie ich den Überschuss mit dem Sed-Befehl loswerde.
(Ich weiß, dass XMLlint dies vereinfachen würde, kann es dafür aber nicht verwenden.)
Antwort1
Dafür brauchen Sie kein sed:
grep -Po '(?<=<element name=")[^"]+' <file>
Oder
grep -Po '<element name="\K[^"]+' <file>