Я перехожу по этой ссылке https://stackoverflow.com/a/54599800/10220825
file.txt
Iteration 1
RAM: +2s
Cache: +142ms (total +417ms)
Iteration 2
RAM: +184ms
Cache: +172ms
Searchms: +131ms (total +385ms)
Iteration 3
RAM: +149ms
Searchms: +3.2s
Я хочу удалить ms or s
из значения времени, но не из имени (например, оно не должноудалить Searchms для поиска).Также я хочу преобразовать s into ms
на multiply into 1000
, если значение времени содержит s
и вывести результат соответственно.
Ожидаемый результат:
RAM: 2000 184 149
Cache: 142 172
Searchms: 131 3200
try.awk
/:/{vals[$1]=vals[$1] OFS $2+0}
END {
for (key in vals)
print key vals[key]
}
При выполнении: awk -f try.awk file.txt
Вывод кода:
Cache: 142 172
Searchms: 131 3.2
RAM: 2 184 149
В моем выводе s is not converting to ms.
Пожалуйста, предложите мнекак изменить указанный выше исходный код try.awk
для преобразования s в мс.
Новый тестовый пример: file.txt
Iteration 1
RAM: +2s342ms
Iteration 2
RAM: +2s
Iteration 3
RAM: +149ms
Код:
/:/ && $2 ~/ms$/{vals[$1]=vals[$1] OFS $2+0;next}
/:/ && $2 ~/[^m]s$/{vals[$1]=vals[$1] OFS ($2+0)*1000}
END {
for (key in vals)
print key vals[key]
}
Ожидаемый результат:
RAM: 2342 2000 149
Выход:
RAM: 2 2000 149