2012-10-12 46 views
2

我需要用另一個字符串替換文件中的字符串,但在替換之前,我需要在將新字符串傳遞給sed之前將其小寫。將tr輸出重定向到sed

echo 'NEWSTRING' | tr '[:upper:]' '[:lower:]' | sed 's/foo/(my tr output in lowercase)/g' file.txt

我的問題是,我們怎麼能忽略替換字符串作爲參數?

回答

4
sed "s/foo/$(echo .. |tr ...)/g" file.txt 
+0

我也不得不增加-i選項來取代它在文件中。 – PapelPincel

+0

是的,對,我沒有想到sed命令,正在考慮其他問題。 –

4

使用xargs嘗試,如:

echo 'NEWSTRING' | tr '[:upper:]' '[:lower:]' | xargs -I '{}' sed 's/foo/{}/g' file.txt 
3

這可能爲你工作(GNU SED):

sed 's/foo/\L'"NEWSTRING"'/'g file