Awk 匹配结果并在空格前显示文本

Awk 匹配结果并在空格前显示文本,awk,sed,Awk,Sed,更确定如何在比赛前显示结果。我可以做一个简单的grep并显示与“llll”匹配的行。返回前如何显示标题。谢谢你的帮助 资料 结果 switch-051 "switch-052_LLLLL" 头记录上的NF==1{h=$1}记住头h /LLLLL/{print h or$NF}onllll记录打印头h和最后一个字段$NF 头记录上的NF==1{h=$1}记住头h /LLLLL/{print h or$NF}onllll记录打印头h和最后一个字段$NF 另一种选择awk awk -v RS

更确定如何在比赛前显示结果。我可以做一个简单的grep并显示与“llll”匹配的行。返回前如何显示标题。谢谢你的帮助

资料

结果

switch-051
"switch-052_LLLLL"
  • 头记录上的NF==1{h=$1}记住头
    h
  • /LLLLL/{print h or$NF}
    on
    llll
    记录打印头
    h
    和最后一个字段
    $NF
  • 头记录上的NF==1{h=$1}记住头
    h
  • /LLLLL/{print h or$NF}
    on
    llll
    记录打印头
    h
    和最后一个字段
    $NF

    • 另一种选择
      awk

       awk -v RS= '{for(i=1; i<=NF; i++) 
                     if($i~/LLLLL/) {print $1; print $i; exit}}' file
      
      switch-051
      "switch-052_LLLLL"
      

      awk-vrs='{for(i=1;i另一种选择
      awk

       awk -v RS= '{for(i=1; i<=NF; i++) 
                     if($i~/LLLLL/) {print $1; print $i; exit}}' file
      
      switch-051
      "switch-052_LLLLL"
      

      awk-vrs='{for(i=1;ikarakfa的答案很好

      您也可以使用perl:

      $ perl -ne 'BEGIN{ $/ = "" } print "$1\n$2" if /^(\S+).*?("[^"]+LLLLL")/s' file
      switch-051
      "switch-052_LLLLL"
      

      卡拉卡法的回答很好

      您也可以使用perl:

      $ perl -ne 'BEGIN{ $/ = "" } print "$1\n$2" if /^(\S+).*?("[^"]+LLLLL")/s' file
      switch-051
      "switch-052_LLLLL"