
Вот мой приказ:
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)
Редактировать: Я заметил, что вы на самом деле разобрались с этим вопросом.