2014-04-17 191 views
0

我想将单词删除到一行中。例如:如何将变量传递给sed

I want to delete one word in this line 

我想删除“一”来获得:

I want to delete word in this line 

通过传递字通过一个变量。到目前为止,我得到了:

WORD=one ; sed -n 's/"$WORD"//g' file.txt > newfile.txt 

但是,它什么也没做。为什么不?我怎样才能使它工作?

+0

变量不会在单引号内部扩展,只能在双引号内使用。双引号内的双引号没有任何特殊效果。 – Barmar

回答

2
WORD=one ; sed -e "s/$WORD//g" file.txt > newfile.txt 

关键时刻是变量扩张。你必须小心,因为shell变量扩展可能有时不是你想要的。在艰苦的情况下,你必须做这样的事情:

EXPANDVAR=one; NOEXPANDVAR=another; sed -e 's/'"$EXPANDVAR"'$NOEXPANDVAR//g' file.txt > newfile.txt 

在这种情况下的sed将取代(删除)模式的一个$ NOEXPANDVAR,从字面上。

+0

哇谢谢,确实这是一个艰难的,感谢解决它! –