У меня есть (несколько) файлов, как показано ниже. У немногих из них есть значения в ТБ и несколько файлов в ГБ. Теперь, если вы четко видите вывод файла, есть две строки с общей емкостью и используемой емкостью. Я могу сделать это с помощью awk, чтобы сложить обе строки по отдельности, но я вижу, что мало в ГБ. Можно ли написать скрипт, который будет проверять значения в ГБ или ТБ, если он в ГБ, то преобразовать в ТБ (1024).

[root@localhost maneesh]# cat server1.txt
Total capacity                   2.0 TB
Capacity used                    735.23 GB
[root@localhost maneesh]#

По сути, в конце я хочу, чтобы все мои ценности были представлены в туберкулезе.

Любая помощь в этом будет оценена.

1 ответ1

3

Вы можете проверить, равен ли $4 GB и поделить $3 на 1024, если это так. Если infile содержит:

Total capacity                   2.0 TB
Capacity used                    735.23 GB

Вы можете сделать что-то вроде этого (parse.awk):

/Total capacity/ { if($4 == "GB") $3 /= 1024; tot  += $3 }
/Capacity used/  { if($4 == "GB") $3 /= 1024; used += $3 }

END { print "Total: " tot " TB, Used: " used " TB" }'

И если вы запустите его так:

awk -f parse.awk infile infile

Ты получаешь:

Total: 4 TB, Used: 1.436 TB

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .