【问题标题】:How to use `sed` to print from between one line and another line? [duplicate]如何使用`sed`在一行和另一行之间打印? [复制]
【发布时间】:2018-08-15 13:24:53
【问题描述】:

假设一个文件有这样的内容:

a
x
y
z
c
some to be omitted
a
b
c

我想打印所有在“a”行和“c”行之间的行(有和没有“c”行都可以):

a
x
y
z
c
a
b
c

我尝试了 sed 命令:

sed -n '/a/{:my_tag /./p; N; /c/ t end; t my_tag; :end}'

它给了我输出:

a
a

命令中的 N 是否只工作一次?我在这里看不到任何循环工作。 sed 的帮助信息有点混乱,好像我做错了。

或者也许一些工具而不是 sed 对这个问题更有帮助和效率,请告诉我如何。

【问题讨论】:

    标签: sed


    【解决方案1】:

    请您尝试关注(如果可以,awk)。

    awk '/^a/{flag=1} flag; /^c/{flag=""}'  Input_file
    

    输出如下。

    a
    x
    y
    z
    c
    a
    b
    c
    

    【讨论】:

      【解决方案2】:

      使用 sed:

      sed -n '/^a$/,/^c$/p' file
      

      sed '/^a$/,/^c$/!d' file
      

      输出:

      一个 X 是的 z C 一个 b C

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 2013-06-27
        • 1970-01-01
        • 2020-05-21
        • 2015-07-16
        • 1970-01-01
        相关资源
        最近更新 更多