Três coisas erradas: -
- A primeira cotação no comando
sed
deve estar antes da opçãos/
, e não antes dosed
- presumo que seja um erro de digitação. - O caractere
>
não tem significado especial em expressões regulares e não deve ter escape. A sequência\>
tem significado especial: significa fim da palavra e porque.*
é "ganancioso" corresponde ao final da última palavra na linha, daí a retenção do#"
. - Se você corresponder à origem
>
, isso será incluído na sequência a ser substituída, portanto, ela também deve aparecer na string de substituição.
Então, seu comando de edição deve ser:
sed 's/PackingList.*>/PackingList>/g' xmlfile
Isso é semelhante à solução do 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á-lo mais legível), use:
sed 's/PackingList.*".*"/PackingList/g' xmlfile
Observe que qualquer tag XML subsequente na mesma linha pode ser excluída por qualquer um dos itens acima: para evitar isso, use:
sed 's/PackingList[^>]*"[^>]*"/PackingList/g' xmlfile