Вы можете иметь сколько угодно пар awk
правило-действие. Поскольку вам кажется, что вы хотите изменить порядок некоторых подполей, вам, вероятно, понадобится глобальное правило, которое разбивает все, что находится после :
в массив, которым вы можете управлять позже для каждого правила.
Например (здесь я показал только первые два):
awk '
BEGIN {FS=":[ \t]+"; OFS=", "}
{split($2, a, /[ \t]+/)}
#
# now the case-by-case rule-action pairs
/Time taken/ {print $1, a[1], a[2]}
/Requests per second/ {print $1" "a[3], a[1], substr(a[2], 2, length(a[2])-2)}
' data.txt
Time taken for tests, 0.004, seconds
Requests per second (mean), 257.40, #/sec
Я тоже не уверен, что понимаю, что вам нужно, но думаю, я бы сделал это за один раз с чем-то вроде этого ...
awk '/Time|Requests|Transfer/{print $0}' data.txt
Таким образом вы можете загружать шаблоны для соответствия и использовать "|". Итак, / Time | Requests | Transfer /
означает «Match Time or Requests or Transfer» и распечатайте строку
Использование TXR :
@(repeat)
@ (cases)
@param: @val [@units] (@rawdesc)
@ (or)
@param: @val [@units] @rawdesc
@ (or)
@param: @val [@units]
@ (bind rawdesc nil)
@ (or)
@param: @val @units (@rawdesc)
@ (or)
@param: @val @units @rawdesc
@ (or)
@param: @val @units
@ (bind rawdesc nil)
@ (or)
@param: @val
@ (bind units "")
@ (bind rawdesc nil)
@ (end)
@ (bind desc @(if rawdesc ` (@(regsub #/,/ "" rawdesc))` ""))
@ (output)
@param@desc, @val, @units
@ (end)
@(end)
Выполнение:
$ txr tocsv.txr data.txt
Concurrency Level, 1,
Time taken for tests, 0.004, seconds
Complete requests, 1,
Failed requests, 0,
Total transferred, 838, bytes
HTML transferred, 632, bytes
Requests per second (mean), 257.40, #/sec
Time per request (mean), 3.885, ms
Time per request (mean across all concurrent requests), 3.885, ms
Transfer rate (received), 210.65, Kbytes/sec
Несмотря на то, что это выглядит многословным из-за «лестницы» случаев, их было легко исправить с помощью копирования и вставки. Код дал желаемые результаты с первой попытки и прозрачен для понимания: с первого взгляда вы получаете картину того, что он ищет.
Порядок дел имеет значение. Если регистр, начинающийся с совпадения
@param: @val
, был помещен первым, val
потреблял бы все значение после двоеточия и пробелов.