Эффективно извлечь несколько значений журнала с помощью Sed - PullRequest
0 голосов
/ 11 февраля 2019

У меня почти есть рабочий код того, что мне нужно, я просто не совсем знаю весь синтаксис.Я прошу прощения за мой предыдущий непонятный пост, поэтому я перепишу свой запрос, надеюсь, легче понять.У меня есть журнал сообщений из нескольких сотен строк.В этом журнале есть две строки, из которых я занимаюсь извлечением данных.Две строки журнала в журнале:

2357: 11-Feb-2019 09:51:22 (low) [] 1369 floating point MIPS (Whetstone) per CPU
2358: 11-Feb-2019 09:51:22 (low) [] 5388 integer MIPS (Dhrystone) per CPU

Я извлекаю значения 1369 и 5388 из этих двух строк.Код, который я создал:

proc=( $(boinccmd --get_messages | sed -n 's/\s*integer MIPS (Dhrystone) per CPU//p' | awk -F\  '{print $6}') )
printf "%s"${proc}"\n"
proc=( $(boinccmd --get_messages | sed -n 's/\s*floating point MIPS (Whetstone) per CPU//p' | awk -F\  '{print $6}') )
printf "%s"${proc}"\n"

Но это приводит к двойной рыбалке.

Есть ли способ сделать это более эффективным, используя другой процесс илиимея вдвое больше и одновременно искать две вещи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Если Procedural Text Edit является опцией:

forEach line {
    ifElse (or 
             (contains cs "floating point MIPS (Whetstone) per CPU")
             (contains cs "integer MIPS (Dhrystone) per CPU")) {        
        select (afterN char 4) { remove }    
    } {
        remove
    }
}
0 голосов
/ 11 февраля 2019

Как насчет awk:

$ awk '{print $6}' file
1369
5388
...