cat 'Extract Text Output.rtf' | sed -n 's/Order Number : \(.*\)\\/\1/gp'
Ergibt genau das, was Sie wollen.
Erläuterung:
sed -n
Standardausgabe von sed unterdrückens/.../.../g
Suchen und Ersetzen, g: alles / globalOrder Number : \(.*\)\\
Suchen Sie nach "Order Number :
" String und abackslash
und speichern Sie alles in Gruppe 1; (Nachteil der Verwendung von sed ist, dem Gruppierungsoperator von regex zu entgehen:(...)
with\(...\)
)\1
Verwenden Sie Gruppe 1 als Ersatzp
Druckersatz, falls eine Übereinstimmung besteht
Dies ist wesentlich flexibler und generischer als die Verwendung von hart codierten Gruppen (7 $).
Hinweis 1: verwenden. *? Wenn Sie Zeilen so formatiert haben:
\cf2 Fab Order Number : FAB00772450\ \b \cf2
Dies verhindert, dass Regex gierig wird und stoppt beim ersten Backslash. Nicht getestet, wenn sed unterstützt *? und +? Betreiber, aber hoffen wir.
Hinweis 2: Wenn Sie mehrere Teile aus einer Linie extrahieren möchten, verwenden Sie mehrere Gruppen. In der Ersetzungszeichenfolge können Sie diese sogar mit der Formatierung wechseln, z .../\2 - \1/