Apare um texto sem laço

2

input (na variável como $ VAR):

'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'dum' : x'dum' 'test' : x'test' 'poo' : x'poo' 'D2-dog' : x'D2-dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass'

Eu quero a saída como:

yoo welcome we dum test poo D2-dog ant rat xmass

Eu não quero saída como:

yoo
welcome
we
dum
test
poo
D2-dog
ant
rat
xmass

Eu tentei echo $VAR | sed "s/' : x'//g" Mas é confuso e não é o que estou esperando.

Podemos usar cut ou tr ou sed ?

Editar após a resposta de Alex: Eu tenho problema com texto diferente:

echo "'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'test' : x'test' 'poo' : x'poo' 'dog' : x'dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass' 'exp' : x'exp' 'S-123': x'S-123' 'demo': x'demo' 'neu': x'neu'" | sed -e "s/'\([^']*\)' : x''//g"

Eu recebo saída como

yoo welcome we test poo dog ant rat xmass exp 'S-123': x'S-123' 'demo': x'demo' 'neu': x'neu'

Estranho e não conseguia descobrir o problema!

    
por Kasino 05.08.2016 / 17:55

1 resposta

3

sed -e "s/'\([^']*\)' \?: x''//g"

funcione assim:

$ MYVAR="'yoo' : x'yoo' 'welcome' : x'welcome' 'we' : x'we' 'dum' : x'dum' 'test' : x'test' 'poo' : x'poo' 'D2-dog' : x'D2-dog' 'ant' : x'ant' 'rat' : x'rat' 'xmass' : x'xmass'"
$ echo "$MYVAR" | sed -e "s/'\([^']*\)' \?: x''//g"
yoo welcome we dum test poo D2-dog ant rat xmass

Isso funciona, porque \X back-references também pode aparecer como parte do padrão de pesquisa estendida.

Editar: RexExp alterada para tornar o espaço antes do cólon opcional

    
por 05.08.2016 / 17:58