2013-02-18 2 views
1

я провел кучу тестов с использованием pgbench, регистрируя результаты:Печать числовых значений <NF в awk?

run-params: 1 1 1 
transaction type: SELECT only 
scaling factor: 1 
query mode: simple 
number of clients: 1 
number of threads: 1 
duration: 90 s 
number of transactions actually processed: 280465 
tps = 3116.254233 (including connections establishing) 
tps = 3116.936248 (excluding connections establishing) 

run-params: 1 1 2 
transaction type: SELECT only 
scaling factor: 1 
query mode: simple 
number of clients: 1 
number of threads: 1 
duration: 90 s 
number of transactions actually processed: 505943 
tps = 5621.570463 (including connections establishing) 
tps = 5622.811538 (excluding connections establishing) 

run-params: 10000 10 3 
transaction type: SELECT only 
scaling factor: 10000 
query mode: simple 
number of clients: 10 
number of threads: 1 
duration: 90 s 
number of transactions actually processed: 10 
tps = 0.012268 (including connections establishing) 
tps = 0.012270 (excluding connections establishing) 

Я хочу, чтобы извлечь значения для построения графиков. Попытка изучить AWK одновременно. Вот моя AWK программа:

/run-params/  { scaling = $2 ; clients = $3 ; attempt = $4 } 
/^tps.*excluding/ { print $scaling "," $clients "," $attempt "," $3 } 

Когда я бегу, я получаю следующий результат:

$ awk -f b.awk -- b.log 
tps,tps,tps,3116.936248 
tps,tps,=,5622.811538 
,,0.012270,0.012270 

, который не то, что я хочу.

Я понимаю, когда scaling = 1, поле 1 ссылок 1, которое в этом случае является tps. При масштабировании = 10000, поскольку в строке не 10000 полей, возвращается значение null. Я попытался назначить масштабирование и друзей, используя "" $2, но безрезультатно.

Как использовать/сообщить числовые значения в следующем блоке действий?

+2

awk не ссылается на переменные с '$', если вы меняете «$ scaling», «$ clients», «$ try' на« масштабирование »,« клиенты »,« пытаться »работать, как хотите. – Thor

+1

Вот код: 'awk '/ run-params/{scaling = $ 2; клиенты = $ 3; try = $ 4} /^tps.*excluding/ {масштабирование печати, клиенты, попытка, $ 3} 'OFS = "," file' – Steve

ответ

1

Просто падение $ перед scaling и т.д. То есть, scaling является ссылкой на переменную, $scaling является ссылкой на поле.

+0

Разве вы не видели комментарий Тора выше, как 5 минут назад? – Steve

+0

@Steve Было бы лучше в качестве ответа. И, нет, я пропустил мимо комментариев, чтобы проверить ответы. – Vatine

+0

Согласен, это должен был быть ответ. Но вы должны действительно прочитать вопрос, комментарии и ответы перед публикацией. Это тоже вежливо. – Steve

Смежные вопросы