【问题标题】:Delete line using sed with dot in string [duplicate]使用带有点的sed在字符串中删除行[重复]
【发布时间】:2014-08-22 16:22:53
【问题描述】:

我尝试使用此答案stack overflow #1 和此站点regexp,但我无法删除带有点的行,在. 之前使用\ 无济于事。我要删除的行是:

export PATH="$HOME/.rbenv/bin:$PATH"

我正在尝试通过写删除这一行

sed -i /'export PATH="$HOME/.rbenv/bin:$PATH"'/{d} .testing

效果? sed: -e expression #1, char 21: unknown command: '.'

尝试另一种方式时,转义点

sed -i /'export PATH="$HOME/\.rbenv/bin:$PATH"'/{d} .testing

效果? sed: -e expression #1, char 21: unknown command: '\'

我不知道如何解决这个问题。

【问题讨论】:

    标签: regex linux bash sed


    【解决方案1】:

    你可以使用:

    sed '\~export PATH="$HOME/.rbenv/bin:$PATH~d' .testing
    

    参考:How to use different delimiters for regex search in sed

    感谢@jaypal 提供链接。

    编辑:如果您在脚本中使用,请尝试将 -i 添加到像这样的 sed 命令以进行内联编辑:

    sed -i.bak '\~export PATH="$HOME/.rbenv/bin:$PATH~d' .testing
    

    使用 -i.bak 备份原始文件。

    【讨论】:

    • 这可以解决问题。谢谢。
    • +1: @SzymonBłaszczyński 您可以阅读更多关于此here 的信息,了解如何使用不同的分隔符进行正则表达式搜索。
    • @jaypal:感谢分享有用的链接。让我提出我的答案。
    • @SzymonBłaszczyński:您对这个答案是否有任何问题,您删除了接受标记?
    • 其实我重定向文件是错误的。如果要向现有文件添加新部分,可以使用 >> 命令将更改附加到文件末尾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2020-01-04
    • 1970-01-01
    • 2017-05-28
    • 2011-02-20
    • 2015-05-08
    • 2012-04-09
    相关资源
    最近更新 更多