sed -e 's!<E> *!<E> !g' -e 's! *</E>! </E>!g'
(Nota: usei !
em vez de #
ou /
como meu delimitador de expressão regular. Preferência pessoal.)
sed
pode receber mais de um comando para ser executado em sua entrada, contanto que cada um seja prefixado com o sinalizador -e
.
O *
após o espaço nas expressões regulares acima significa "corresponde a 0 ou mais caracteres de espaço". A página re_format
man fornece mais informações sobre essa repetição:
An atom followed by '
*
' matches a sequence of 0 or more matches of the atom. An atom followed by '+
' matches a sequence of 1 or more matches of the atom. An atom followed by '?
' matches a sequence of 0 or 1 matches of the atom.
em que um "átomo" é o sub-padrão antes do *
, +
ou ?
.
A executar este comando sed
nos seus exemplos:
reedm@www:/tmp $ cat > example.txt
<E>This is text </E>
<E> This is text</E>
<E> This is text </E>
<E> This is text </E>
reedm@www:/tmp $ sed -e 's!<E> *!<E> !g' -e 's! *</E>! </E>!g' example.txt
<E> This is text </E>
<E> This is text </E>
<E> This is text </E>
<E> This is text </E>