подстановка sed соответствует слишком большому количеству входных данных

подстановка sed соответствует слишком большому количеству входных данных

Вот мой приказ:

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

Файл mydicсодержит 2 столбца, разделенных запятыми ( ,)

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

Ожидаемый результат — testedd, но я получаю AlphabetTAlphabetEAlphabetSAlphabetT.

решение1

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

\<и\>обозначают начало и конец слова соответственно.

решение2

Вы попросили его заменить "e" на "AlphabetE", что он и сделал правильно. Я подозреваю, что вы имели в виду, чтобы он учитывал только целые слова?

Попробуй это:

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

Редактировать: Я заметил, что вы на самом деле разобрались с этим вопросом.

Связанный контент