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

您要求它用“AlphabetE”替换“e”,它做得正确。我怀疑你的意思是只考虑整个单词?

尝试这个:

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

编辑:我注意到您实际上已经处理了案件问题。

相关内容