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)

編輯:我注意到您實際上已經處理了案件問題。

相關內容