【问题标题】:How to reverse sed output?如何反转sed输出?
【发布时间】:2010-10-18 21:02:21
【问题描述】:

我正在阅读大约 500 个字符的行。我怎样才能得到 sed,而不是用某些东西替换该字符串,而是用某些东西替换该行的其余部分? 简而言之,我想删除指定字符串周围的所有文本。用 awk 删除列是行不通的,因为在匹配的字符串之前和之后有不确定数量的字符。 有什么想法吗?

【问题讨论】:

    标签: string unix shell sed


    【解决方案1】:

    尝试使用反向引用:

    sed 's/.*\(searchstring\).*/___\1___/'
    

    搜索字符串周围的.* 将匹配除字符串之外的所有内容,括号告诉sed 记住它匹配的内容。您可以使用\1 引用第一个匹配的字符串。

    这是一个示例(替换除“bar baz”之外的所有内容):

    $ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
    ___bar baz___
    

    你可以用上面任何你喜欢的模式替换'bar baz';为了简单起见,我只是使用了一个基本字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多