【问题标题】:Sed deleting exact pattern in variable from fileSed从文件中删除变量中的确切模式
【发布时间】:2015-11-01 19:05:51
【问题描述】:

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

的文件
aaa
bbbb
bb
ddddd
dd
ccccc
ccc

我尝试删除带有sed -i /$1/d ./.resources 的确切行 其中 $1 是用户输入。当我填写 bb 时,假设只删除bb,而不是像bbbb 这样的所有匹配模式。我已经尝试使用\<\> 来获得像sed -i /\<$1\>/d ./.resources 这样的精确模式,但它没有用。我究竟做错了什么?我该如何解决这个问题?

【问题讨论】:

    标签: bash sed pattern-matching


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      • 行首:^
      • 行尾:$

      所以,这将起作用:

      set -- dd
      
      sed '/^${1}$/d' ./.resources
      

      【讨论】:

        猜你喜欢
        • 2013-04-09
        • 2021-08-23
        • 2023-01-26
        • 1970-01-01
        • 2016-06-19
        • 2011-05-25
        • 2011-11-13
        • 1970-01-01
        • 2016-12-30
        相关资源
        最近更新 更多