Grep un liner pour supprimer des blocs de text random

Utilisation d'un script pour sauvegarder certains routeurs Cisco et comparer les configurations de démarrage et d'exécution. Ma sortie est ternie par certains certificates SSL qu'elle renvoie – je souhaite les supprimer.

Donné:

********* ERROR running diff on: AVE-1941-LAN config files Code: 0 *************** certificatee self-signed 01 | certificatee self-signed 01 nvram:IOS-Self-Sig#1.cer 30820253 308201BC A0030201 02020101 300D0609 2A864886 F70D0 < 31312F30 2D060355 04031326 494F532D 53656C66 2D536967 6E656 < 69666963 6174652D 33393336 35313332 3733301E 170D3131 31323 < 33355A17 0D323030 31303130 30303030 305A3031 312F302D 06035 < 4F532D53 656C662D 5369676E 65642D43 65727469 66696361 74652 < 31333237 3330819F 300D0609 2A864886 F70D0101 01050003 818D0 < 81008EE9 17E0DDA9 B9ACAEEE 788267CD 1A6E7B99 15A1797E C1AFE < 97F5E44A 7CA1E814 E329EEC3 1C6229CD 5C78C9FB F5107E23 FE386 < E7FA1849 BBA4884C 6001925E 6B2D2987 415AB429 ECDFCF87 E708D < C22F137C E5778EC0 E8F6A0FB 30A2EEF7 AB2E5E77 53F2D83B B7497 < 8A5F0203 010001A3 7B307930 0F060355 1D130101 FF040530 03010 < 551D1104 1F301D82 1B424553 2D313934 312D4176 652E796F 75726 < 2E636F6D 301F0603 551D2304 18301680 14895C79 C998FF5B 08E1A < F3866724 C4301D06 03551D0E 04160414 895C79C9 98FF5B08 E1A23 < 866724C4 300D0609 2A864886 F70D0101 04050003 81810002 DE0D3 < 4708834D C2267F49 86A62B31 A505D0F9 79BBC295 1C8DB831 39467 < 4A1F9149 DDB2ACDE CEE3DCB4 9CDAD85F 457D00BF BFBA3058 52188 < FD497E36 93C06D1D C35012B6 A61A35FC 88681759 C51F6C0A A79A9 < DB5391E9 49575BD5 50B6319E 065C2C99 4D9AB450 9D22D8 < quit 

Je voudrais finir avec;

 ********* ERROR running diff on: AVE-1941-LAN config files Code: 0 *************** certificatee self-signed 01 | certificatee self-signed 01 nvram:IOS-Self-Sig#1.cer quit 

Est-ce possible avec un grep un liner avec peut-être regex?

Pourvu que la production se limite à ce que vous avez là, simplement se débarrasser de ces lignes indésirables serait:

 grep -v '[0-9A-F]\{5\} <$' 

Pour que les nouvelles lignes soient également supprimées, je les placerais probablement dans une autre command grep , car il est facile de lire de cette façon:

 grep -v '[0-9A-F\{5\} <$' | grep -v '^$' 

Vous pouvez toujours utiliser PERL ou GAWK:

 $ perl -ne 'print unless /<\s*$/' input_file 

ou

 $ gawk '$NF!~/</' 

Les deux scriptlets vont imprimer toutes les lignes qui ne se terminent pas par "<".

En utilisant sed :

 sed '/<\s*$/,/^\s*$/d' 

essaye ça

 grep -v '^[0-9A-F]\{8\}'