Drucken Sie die RegEx-übereinstimmungen mit SED in der bash
Ich habe eine XML-Datei, wird die Datei aus einer Zeile.
Was ich versuche zu tun ist, entpacken Sie die " finalNumber
" - Attribut mit dem Wert aus der Datei per Putty. Eher als, um eine Kopie herunterzuladen und Suche mit notepad++.
Ich aufgebaut haben, einen regulären Ausdruck, die ich getestet habe, auf eine On-line-Werkzeug, und versucht, mit es innerhalb einer sed
Befehl doppelte grep-Funktionalität. Der Befehl wird ausgeführt, aber nichts zurückgibt.
RegEx:
(?<=finalNumber=")(.*?)(?=")
sed
Befehl (gibt nichts zurück, erwartet 28, siehe Datei extrahieren):
sed -n '/(?<=finalNumber=")(.*?)(?=")/p' file.xml
Datei Extrahieren:
...argo:finalizedDate="2012-02-09T00:00:00.000Z" argo:finalNumber="28" argo:revenueMonth=""...
Ich das Gefühl, ich bin in der Nähe (ich könnte falsch sein), bin ich auf dem richtigen Weg oder gibt es eine bessere Art und Weise zu erreichen, die Ausgabe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nichts falsch mit der guten alten grep hier.
Verwenden
-E
für erweiterte reguläre Ausdrücke und-o
drucken nur der entsprechende Teil.Wenn Sie bereits wählen Sie eine Antwort, hier ist ein Weg, die Sie tun können, in der reinen sed:
Ausgabe:
Diese ersetzt die gesamte Zeile, indem Sie die match-Zahl und drucken (weil p drucken die gesamte Zeile, also müssen Sie ersetzen die gesamte Zeile)
Könnte dies für Sie arbeiten (GNU sed):
sed
unterstützt nicht die look-ahead-assertions. Perl tut, aber:So wie ich das verstehe, gibt es keine Notwendigkeit zu verwenden-look-aheads hier.
Versuchen, diese