Grep oneliner는 임의의 텍스트 블록을 제거합니다.

Grep oneliner는 임의의 텍스트 블록을 제거합니다.

스크립트를 사용하여 일부 Cisco 라우터를 백업하고 시작 및 실행 구성을 비교하십시오. 내 출력이 반환된 일부 SSL 인증서로 인해 오염되었습니다. 이를 제거하고 싶습니다.

반면:

*********  ERROR running diff on: AVE-1941-LAN config files Code: 0 ***************
 certificate self-signed 01                   |  certificate 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        

나는 끝내고 싶다.

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

grep oneliner와 정규식을 사용하여 이를 달성할 수 있습니까?

답변1

출력이 현재 가지고 있는 내용으로 제한되어 있다고 가정하면 필요하지 않은 줄을 제거하면 됩니다.

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

개행 문자도 제거하려면 이 명령을 다른 grep명령에 파이프하면 읽기가 더 쉽기 때문입니다.

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

답변2

언제든지 PERL 또는 GAWK를 사용할 수 있습니다.

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

또는

$ gawk '$NF!~/</'

두 스크립틀릿 모두 "<"로 끝나지 않는 모든 줄을 인쇄합니다.

답변3

사용 sed:

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

답변4

이 시도

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

관련 정보