cat 'Extract Text Output.rtf' | sed -n 's/Order Number : \(.*\)\//gp'
Produz exatamente o que você quer.
Explicação:
-
sed -n
suprime a saída padrão do sed -
s/.../.../g
procura e substitui, g: tudo / globalmente -
Order Number : \(.*\)\
procura "Order Number :
" string ebackslash
e salva qualquer coisa entre o grupo 1; (desvantagem de usar o sed é ter que escapar do operador de agrupamento do regex:(...)
com\(...\)
) -
usa o grupo 1 como substituto
-
p
substituição de impressão se houver correspondência
Isso é muito mais flexível e genérico do que usar grupos awk codificados ($ 7).
Nota 1: use. *? se você tem linhas formatadas assim:
\cf2 Fab Order Number : FAB00772450\ \b \cf2
Isso evita que a regex seja gananciosa e pare na primeira barra invertida. Não testado se o sed suporta *? e + operadores, mas vamos esperar.
Nota 2: Se você tiver várias partes que deseja extrair de uma linha, use vários grupos e, na sequência de substituição, você poderá até alterná-los com a formatação, como .../ - /