Você pode usar a opção cut
de -d
para definir um delimitador (que é excluído dos campos resultantes):
echo "<xml:attribute>{41c33a-4893b-3627a-617a}</xml:attribute>" | cut -d\> -f2 | cut -d\< -f1
Isso se divide em >
e gera o segundo campo, deixando {41c33a-4893b-3627a-617a}</xml:attribute
, depois novamente em <
e produz o primeiro campo.
Os campos descrevem o texto entre delimitadores e entre o início do texto e o primeiro delimitador e o último delimitador e o final do texto. Usando >
no texto original, você acaba com:
-
<xml:attribute
-
{41c33a-4893b-3627a-617a}</xml:attribute
- a string vazia
(o delimitador é omitido). Então, usando <
no campo 2, dá
-
{41c33a-4893b-3627a-617a}
-
/xml:attribute
e o campo 1 é o resultado que você está procurando.