получить одну вещь из линии и объединить ее с одной стороны из другой линии

Вставьте следующую команду:

route add default gw 192.168.2.1 bond0 

в /etc/rc.local

4
12.11.2018, 11:07
3 ответа

Этот лайнер Perl one -должен помочь:

perl -lne'$d=$1 if /^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})/;
if(/^Average\s+\S+\s+\S+\s+\S+\s+(\S+)/) {print "$d|$1";}'

(Я сделал его двумя строками, так читабельнее. )Тем не менее, вам нужно ввести данные. Имя файла в конце, или <file_nameв начале, или в конце, или канал. Работы таковы:

  1. Перейдите к строке с датой и временем в начале и запомните ее.
  2. Перейдите к строке с Averageв начале и, оказавшись там, напечатайте запомненные дату и время, плюс знак |и среднее значение, взятое из пятого столбца, предполагая разделение столбцов пробелами.
  3. Пункт 1. повторяется.
2
27.01.2020, 20:45

Судя по вашему входному файлу -, достаточно простой команды awk, как показано ниже.

awk '/sar/{ time=$1" "$2; next }/Average/{ print time"|"$5 }' file
11
27.01.2020, 20:45

Пара вариантов:

  • awk

    $ awk '/COMMAND/{printf "%s %s", $1,$2}/Average/{print "|"$5}' file 
    2018-11-10 23:57:21|84
    2018-11-10 23:58:21|84
    
  • perl

    $ perl -ale '$k="$F[0] $F[1]" if /COMMAND/; print "$k|$F[4]" if /Average/' file 
    2018-11-10 23:57:21|84
    2018-11-10 23:58:21|84
    
5
27.01.2020, 20:45

Теги

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