Grep не делает замен, для этого вам понадобится sed.Но sed не может выполнять математические или условные вычисления, поэтому, если вам нужен полный x1024 K / M, вам понадобится awk.Если вы можете жить с x1000, вы можете легко использовать sed, чтобы заменить K / M соответствующим количеством нулей:
sed -e s/K/000/ -e s/M/000000/
Код Awk для полных 1024, если у вас есть gawk или другой интерпретатор с switch
:
#!/usr/bin/awk -f
BEGIN { FS = "\""; OFS = "\"" }
{
N = $2+0
if(N == 0) { print; next }
M = substr($2,length($2),1)
switch(M) {
# Add T, P, X, etc. if you need them. Or just for fun.
case "G": N *= 1024
case "M": N *= 1024
case "K": N *= 1024
}
$2 = N
print
}
Если перед этим полем есть возможность добавить кавычки, измените $2
на $NF
.Если у вашего переводчика нет switch
, вы можете использовать if
заявления с умноженными продуктами или использовать ответ Кента.Я просто хотел показать использование "
в качестве разделителя и правильное использование падений switch
.