如何在第一行中打印两个字符串,其中一个空格分隔符,另一个字符串在Linux中的两个字符串之间

时间:2017-12-25 17:26:12

标签: linux

我有一个超过100行的文件。

但只有一些行具有类似abc的特定模式。

我的问题是我想要打印两件事

  1. 具有模式abc的第5个字。

  2. 两个不同字符串之间的字(xxx, yyy)

  3. 比方说,我的文件包含以下内容:

      

    这是第一行。

         

    第二行的格式为abcxxx为第一个分隔符,yyy为第二个分隔符。

         

    这是第三行。

         

    同样,第四行具有相同的模式abc,其中包含分隔符xxxyyy

         

    等等。

    所需的输出如下:

      

    模式作为第一个分隔符和   相同和

    我在Linux中尝试了很多方法,但如果我能够打印第5个字,那么xxxyyy之间的内容就无法打印,反之亦然。

    任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

让我回答你的问题:

我的问题是我想要打印两件事

  1. 具有模式abc的第5个字。

  2. 两个不同字符串之间的字(xxx, yyy)

  3. 您可以对问题的两个部分使用awk

    1. awk '/abc/{print $5}' input_file.txt
    2. awk '/xxx.*yyy/{if(match($0,"xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}' input_file.txt
    3. 如果您需要在一个命令中组合这两个要求:

      awk '/abc/{print $5} /xxx.*yyy/{if(match($0,"xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}'
      

      <强>输出

      pattern
      xxx as first separator and yyy
      same
      xxx and yyy