2016-11-02 1 views
0

Ich möchte nur die Zeilen, wo Schnittstelle Gigabitehernet hat eine Beschreibung. i verwendet:Wie genau passiere ich auf mehrere Zeilen linux

cat filter.txt | awk '/interface/ || /description/' 

So als Ausgabe von filter.txt i folgenden sehen will.

interface GigabitEthernet0/26 
description test1 

interface GigabitEthernet0/27 
description test2 

interface GigabitEthernet0/28 
description test3 


interface GigabitEthernet0/29 
description test 4 


tst:~$ cat filter.txt 
interface Port-channel1 
interface FastEthernet0 
interface GigabitEthernet0/1  
interface GigabitEthernet0/2 
interface GigabitEthernet0/3 
interface GigabitEthernet0/4 
interface GigabitEthernet0/5 
interface GigabitEthernet0/6 
interface GigabitEthernet0/7 
interface GigabitEthernet0/8 
interface GigabitEthernet0/9 
interface GigabitEthernet0/10 
interface GigabitEthernet0/11 
interface GigabitEthernet0/12 
interface GigabitEthernet0/13 
interface GigabitEthernet0/14 
interface GigabitEthernet0/15 
interface GigabitEthernet0/16 
interface GigabitEthernet0/17 
interface GigabitEthernet0/18 
description test1  
interface GigabitEthernet0/19 
description test2  
interface GigabitEthernet0/20  
interface GigabitEthernet0/21  
interface GigabitEthernet0/22  
interface GigabitEthernet0/23  
interface GigabitEthernet0/24 
interface GigabitEthernet0/25 
interface GigabitEthernet0/26 
description test3 
interface GigabitEthernet0/27 
description test4 
interface GigabitEthernet0/28 
description test5  
interface GigabitEthernet0/29 
description test6 
interface GigabitEthernet0/30 

Dank für Ihre Hilfe

+0

meisten 'Schnittstelle GigabitEthernet0' keine Beschreibung in der gewünschten Ausgang. – SLePort

Antwort

2
#use sed 
sed -n '/interface/h;/description/{s/^ //;H;x;p}' file.txt 
#use awk 
awk '/interface/{s=$0;}/description/{$1=$1;print s RS $0 ;s="";}' file.txt 
#output: 
interface GigabitEthernet0/18 
description test1  
interface GigabitEthernet0/19 
description test2  
interface GigabitEthernet0/26 
description test3 
interface GigabitEthernet0/27 
description test4 
interface GigabitEthernet0/28 
description test5  
interface GigabitEthernet0/29 
description test6 
+0

Ich denke, Sie können Ihren zweiten Befehl ändern in: 'awk '/ Schnittstelle/{s = $ 0;}/(Beschreibung)/{print s RS $ 1; s =" ";}'./File.txt'. Es wird das Leerzeichen vor der 'description' als Frager erwartet. –

+0

ich verstehe nicht –

+0

Das ist ein Leerzeichen vor der '(Beschreibung)'. –

Verwandte Themen