【问题标题】:How to pass a variable to sed [duplicate]如何将变量传递给 sed [重复]
【发布时间】:2014-04-17 12:38:21
【问题描述】:

我想将单词删除成一行。例如:

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

但是,它什么也没做。为什么不?我怎样才能让它发挥作用?

【问题讨论】:

  • 变量不在单引号内展开,仅在双引号内展开。单引号内的双引号没有任何特殊作用。

标签: sed


【解决方案1】:
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 将替换(删除)模式 one$NOEXPANDVAR ,字面意思。

【讨论】:

  • 哇,谢谢,确实很难,谢谢解决!
猜你喜欢
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多