substituição do sed corresponde a muitos inputs

1

Este é o meu comando:

echo "Test" | sed -f <(sed -e 's/.*/s,&,gI/' mydic)  

O arquivo mydic contém 2 colunas delimitadas por vírgulas ( , )

a,AlphabetA  
.  
.   
.    
e,AlphabetE   
.   
.   
s,AlphabetS  
.   
t,AlphabetT   
test,testedd   
.   
.   
zebra,zebraaaa

O resultado esperado é testedd , mas recebo AlphabetTAlphabetEAlphabetSAlphabetT .

    
por Runicer 10.04.2012 / 17:43

2 respostas

2
echo Test |sed -f <(sed 's/\(.*\),\(.*\)/s,\<\>,,gI/' mydic)

\ < e \ > indicam o início e o fim de uma palavra, respectivamente.

    
por 10.04.2012 / 18:30
1

Você pediu para substituir "e" por "AlphabetE", o que é feito corretamente. Eu suspeito que você quis dizer apenas considerar palavras inteiras?

Tente isto:

echo "test" | sed -f <(sed -e 's/.*/s,\<&\>,gI/' mydic)

Edit: Eu notei que você tinha de fato lidado com o assunto do caso.

    
por 10.04.2012 / 17:55

Tags