2017-02-01 74 views
0

更确定如何在比赛前显示结果。我可以做一个简单的grep并显示匹配'LLLLL'的行。我将如何在返回之前显示标题。谢谢您的帮助。匹配结果并在空格前显示文本

数据

switch-031 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.1.14 = STRING: "switch-031" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.1.15 = STRING: "switch-032" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.7.28 = STRING: "switch-033" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.9.29 = STRING: "switch-034" 

switch-041 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.10035.13 = STRING: "switch-044" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.10035.15 = STRING: "switch-043" 

switch-051 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.8.2 = STRING: "switch-053" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.10.1 = STRING: "switch-054" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.1.3 = STRING: "switch-052_LLLLL" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.12.5 = STRING: "switch-055" 
.1.3.6.1.4.1.9.9.23.1.2.1.1.6.12.6 = STRING: "switch-056" 

结果

switch-051 
"switch-052_LLLLL" 

回答

3
$ awk 'NF==1{h=$1} /LLLLL/{print h ORS $NF}' file 
switch-051 
"switch-052_LLLLL" 
  • NF==1 { h=$1 }在头记录记得LLLLL记录打印头头h
  • /LLLLL/ { print h ORS $NF } 210和最后场$NF
2

另一种选择awk

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

switch-051 
"switch-052_LLLLL" 
0

karakfa的答案是伟大的。

您可以使用Perl以及:

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