Итак, я пытаюсь проанализировать очень большие файлы журналов в linux, и я видел множество решений для этого, но программа, которая записывает данные, не позволяет форматировать вывод, поэтому он выводится только в читаемом человеком формате (я знаю, какая боль). Таким образом, вопрос: Как я могу преобразовать читаемым человеком в байты, используя что-то вроде AWK:Преобразование человека, читаемого в байты в bash
Так превращаю-:
937
1.43K
120.3M
к:
937
1464
126143693
я могу себе позволить, и я ожидаю некоторое закругление ошибки.
Заранее спасибо.
P.S. Не обязательно быть awk, если он может обеспечить конверсии в режиме «онлайн».
Я нашел this, но данная команда awk не работает должным образом. Он выводит что-то вроде 534K «0».
Я также нашел решение с использованием sed и bc, но поскольку он использует bc, он имеет ограниченную эффективность, означая, что он может использовать только один столбец за раз, и все данные должны быть подходящими для bc, иначе он не сработает.
sed -e 's/K/\*1024/g' -e 's/M/\*1048576/g' -e 's/G/\*1073741824/g' | bc
Заканчивать этот ответ http://stackoverflow.com/questions/4399475/unformat-disk-size-strings/ – amdn
@amdn, спасибо, я действительно нашел что-то подобное и сделал редактирование. Единственная проблема с этим решением заключается в том, что он использует bc, поэтому он не может слишком хорошо анализировать полный файл журнала. Он может работать с одним столбцом данных, который является одним и тем же типом. – Devon
В нижней части этого ответа есть «один лайнер», который не использует bc – amdn