gpt4 book ai didi

sed - 在正则表达式之间打印文本

转载 作者:行者123 更新时间:2023-12-04 21:44:07 25 4
gpt4 key购买 nike

我试过 '/pat1/,/pat2/p' ,但我只想打印图案之间的文本,而不是整行。我怎么做?

最佳答案

模式范围用于多行模式。这就是你要做的:

sed  -n '/pat1/,/pat2/{/pat1\|pat2/!p}' inputfile
  • -n - 默认不打印
  • /pat1/,/pat2/ - 在包含
  • 的两种模式内
  • /pat1\|pat2/!p - 打印不是模式之一的所有内容

  • 您可能要问的是同一行上两个模式之间的内容。其他答案之一将这样做。

    编辑:

    几个例子:
    $ cat file1
    aaaa bbbb cccc
    123 start 456
    this is what
    I want
    789 end 000
    xxxx yyyy zzzz
    $ sed -n '/start/,/end/{/start\|end/!p}' file1
    this is what
    I want

    您可以通过告诉 sed 再次使用最近的模式( // )来缩短它:
    $ sed  -n '/.*start.*/,/^[0-9]\{3\} end 0*$/{//!p}' file1
    this is what
    I want

    如您所见,我不必在命令的第二部分中复制长而复杂的正则表达式。

    关于sed - 在正则表达式之间打印文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224826/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com