2017-02-01 6 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" 
関連する問題