Греп не выполняет замены, для этого вам понадобится sed. Но sed не может выполнять математику или условные обозначения, поэтому, если вам нужен полный x1024 K/M, вам понадобится awk. Если вы можете жить с X1000, вы можете легко использовать СЭД, чтобы заменить 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
.
'Редактирование шоу '\ n' после каждого цитируемого значения. Так ли это файл, или это редакционное предположение? –
@JonathanM код имеет '\ n', я просто сделал его видимым на моем редактировании. посмотрите исходный источник http://stackoverflow.com/revisions/62bc4eba-9597-4981-a71e-af32e239a732/view-source –
@BookOfZeus, спасибо. –