Sed从文件中删除变量中的确切模式

时间:2015-11-01 19:05:52

标签: bash sed pattern-matching

我在这个网站上看过很多解决方案,但没有一个能帮我解决问题。 我有一个包含

的文件
aaa
bbbb
bb
ddddd
dd
ccccc
ccc

我已尝试删除sed -i /$1/d ./.resources的确切行 其中$ 1是用户输入。当我填写bb时,我们假设只删除bb而不是所有匹配的模式,例如bbbb。我已尝试将\<\>用于sed -i /\<$1\>/d ./.resources之类的精确模式,但它并不起作用。我究竟做错了什么?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您必须使用^和$运算符匹配那些在行的开头和结尾之间完全具有模式的行: 因此,对于您的示例,代码将是:

sed -i /^${1}$/d ./.resources

答案 1 :(得分:1)

你需要告诉sed该模式应该在这个范围内匹配:

  • 开始行:^
  • 行尾:$

所以,这将有效:

set -- dd

sed '/^${1}$/d' ./.resources