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

在Linux中,如何在一行中打印两个字符串一个带空格分隔符,另一个在两个字符串之间,linux,Linux,我有一个超过100行的文件 但只有一些行具有特定的模式,如abc 我的问题是我想打印两件东西 第五行字,具有模式abc 两个不同字符串之间的单词(xxx,yyy) 例如,假设我的文件包含以下内容: 这是第一行 第二行有abc模式,第一个分隔符是xxx,第二个分隔符是yyy 这是第三行 第四行同样具有相同的模式abc,带有分隔符xxx和yyy 等等 所需的输出如下所示: 模式作为第一个分隔符和 同 我在Linux中尝试了很多方法,但如果我能够打印第5个单词,那么xxx和yyy之间的内容我就无法打印

我有一个超过100行的文件

但只有一些行具有特定的模式,如
abc

我的问题是我想打印两件东西

  • 第五行字,具有模式
    abc

  • 两个不同字符串之间的单词
    (xxx,yyy)

  • 例如,假设我的文件包含以下内容:

    这是第一行

    第二行有
    abc
    模式,第一个分隔符是
    xxx
    ,第二个分隔符是
    yyy

    这是第三行

    第四行同样具有相同的模式
    abc
    ,带有分隔符
    xxx
    yyy

    等等

    所需的输出如下所示:

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

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


    有人能帮我吗?

    让我回答你的问题:


    我的问题是我想打印两件东西

  • 第五行字,具有模式
    abc

  • 两个不同字符串之间的单词
    (xxx,yyy)


  • 您可以对问题的两部分使用
    awk

  • awk'/abc/{print$5}'
    input_file.txt
  • awk'/xxx.*yyy/{if(匹配($0,“xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}input_file.txt
  • 如果需要在一个命令中结合两个需求:

    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
    

    Linux不是一种语言;您没有显示“所需的输出”,也没有任何解决问题的尝试。