2017-02-01 11 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 } на записях заголовка помните заголовок h
  • /LLLLL/ { print h ORS $NF } на LLLLL записей печати заголовка h и последнее поле $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"