如何将变量传递给sed

时间:2014-04-17 03:19:56

标签: sed

我想删除一行中的单词。例如:

I want to delete one word in this line

我想删除'one'来获取:

I want to delete  word in this line

通过变量传递单词。到目前为止我有:

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

但是,它没有做任何事情。为什么不?我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分: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,字面意思。