a substituição sed corresponde a muitas entradas

a substituição sed corresponde a muitas entradas

Este é o meu comando:

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

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

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

O resultado esperado é testedd, mas eu entendo AlphabetTAlphabetEAlphabetSAlphabetT.

Responder1

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

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

Responder2

Você pediu para substituir "e" por "AlphabetE", o que foi feito corretamente. Eu suspeito que você pretendia considerar apenas palavras inteiras.

Experimente isto:

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

Editar: percebi que você de fato lidou com a questão do caso.

informação relacionada