Três coisas erradas:
- A primeira citação no
sed
comando deve ser antes da s/
opção, não antes de sed
si - presumo que seja um erro de digitação.
- O
>
caracter não tem um significado especial em expressões regulares e não deve ser ignorado - a sequência \>
tem um significado especial: significa o fim da palavra e, por .*
ser "gananciosa", corresponde ao final da última palavra na linha, daí a retenção de o #"
.
- Se você corresponder à fonte
>
, ela será incluída na string a ser substituída, portanto, ela também deve aparecer na string de substituição.
Então, o seu comando de edição deve ser:
sed 's/PackingList.*>/PackingList>/g' xmlfile
Isso é semelhante à solução de jherran, mas leva em conta sua tentativa original de correspondência. Pode ser melhor combinar com a aspa dupla:
sed 's/PackingList.*"/PackingList/g' xmlfile
Se você não quiser confiar na ganância (e torná-la mais legível), use:
sed 's/PackingList.*".*"/PackingList/g' xmlfile
Observe que qualquer tag XML subseqüente na mesma linha pode ser excluída por qualquer um dos itens acima: para evitar isso, use:
sed 's/PackingList[^>]*"[^>]*"/PackingList/g' xmlfile