Извлечение трассировочной информации с помощью простофили

tac file | sed '/xyz/,/a/!d' | tac

(если у вас нет -так, ваша команда -хвост может иметь команду -r, чтобы сделать то же самое).

1
09.03.2019, 11:17
1 ответ

Несколько моментов, которые следует учитывать в следующем скрипте gawk :

  • Видно, что введенная вами дата не показывает век , вам необходимо учитывать этот формат в отношении того, что дата используется по умолчанию.

  • Предоставленный пример вывода показывает десятичное время, но в вашем описании указаны секунды. Данные указаны в секундах, поэтому этот скрипт выводит целочисленные секунды


gawk 'function d2s( date ){ c="date -d\""date"\" +%s"; c|getline b; close(c); return gensub("\n","","",b) }
      BEGIN{ RS="\n *\n" }
      { 
        nf=split($0,f,"\n"); delete o
        for(fi=1;fi<=nf;fi++){
            split(f[fi],s," ")
            if( s[1]=="TIME:"     ) o[1]=s[2]" "s[3]
            if( s[1]=="FROM:"     ) o[2]=s[2]      
            if( s[1]=="NEXT_HOP:" ) o[3]=s[2]      
            if( s[1]=="ORIGIN:"   ) o[4]=s[2]      
        }
        if( o[1] ){
            if( fps ) tds=d2s(o[1])-fps
            else { tds=0; fps=d2s(o[1]) }
            printf( "%s %s %s %s\n", tds, o[2], o[3], o[4] ) 
        } 
      }' "$f"

с временем ввода, отличным от опубликованного (все они были одинаковыми):

0 96.4.0.55 96.4.0.55 IGP
1 213.140.32.148 213.140.32.148 IGP
3 207.45.223.244 207.45.223.244 IGP
7 195.219.96.239 195.219.96.239 IGP
15 129.250.0.11 129.250.0.11 IGP
1
27.01.2020, 23:51

Теги

Похожие вопросы