关于awk的替换计算
-
- 帖子: 16
- 注册时间: 2009-08-13 16:57
关于awk的替换计算
能不能帮我看下这段代码有什么错误?
数据格式如下:
A:4K
A:2M
A:2K
。
。
有问题代码如下:
BEGIN { FS = ":"; totalm=0 }
/A:/{
if ( gsub( /K$/,"",$2) ) totalm=totalm + $2/1024;
else
if ( gsub( /M$/,"",$2 ) totalm=totalm + $2;
}
总是报totalm=totalm + $2这地方有语法错误
数据格式如下:
A:4K
A:2M
A:2K
。
。
有问题代码如下:
BEGIN { FS = ":"; totalm=0 }
/A:/{
if ( gsub( /K$/,"",$2) ) totalm=totalm + $2/1024;
else
if ( gsub( /M$/,"",$2 ) totalm=totalm + $2;
}
总是报totalm=totalm + $2这地方有语法错误
上次由 mushroom09 在 2009-11-12 13:34,总共编辑 1 次。
-
- 帖子: 198
- 注册时间: 2007-11-10 8:57
Re: 关于awk的替换计算
$3? 变量能是纯数字吗?
-
- 帖子: 16
- 注册时间: 2009-08-13 16:57
Re: 关于awk的替换计算
拜求大牛现身指教
或者有什么好的方法可以计算:(用awk解决)
A:1K
A:2M
A:4M
A:3K
.
.
.
对A求和结果如下
total A = ?M

或者有什么好的方法可以计算:(用awk解决)
A:1K
A:2M
A:4M
A:3K
.
.
.
对A求和结果如下
total A = ?M
-
- 帖子: 16
- 注册时间: 2009-08-13 16:57
Re: 关于awk的替换计算
。。。。。blue sea 写了:$3? 变量能是纯数字吗?
- yingfei
- 帖子: 273
- 注册时间: 2007-09-03 18:34
- 来自: 羊城通
Re: 关于awk的替换计算
嗯, 你那行少了一个右括号, 鉴定完毕。
-
- 帖子: 14
- 注册时间: 2009-11-09 8:44
Re: 关于awk的替换计算
BEGIN { FS = ":"; totalm=0 }
/A:/{
if ( gsub( /K$/,"",$2) totalm=totalm + $2/1024;
else
if ( gsub( /M$/,"",$2 ) totalm=totalm + $2;
}
把括号去掉.
/A:/{
if ( gsub( /K$/,"",$2) totalm=totalm + $2/1024;
else
if ( gsub( /M$/,"",$2 ) totalm=totalm + $2;
}
把括号去掉.
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 关于awk的替换计算
另一个做法:
代码: 全选
BEGIN { FS = ":"; totalm=0 }
$2 ~ /K$/ {totalm=totalm + $2/1024; }
$2 ~ /M$/ {totalm=totalm + $2;}
END {print totalm}
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- Stupid kid
- 帖子: 416
- 注册时间: 2006-10-18 12:57
Re: 关于awk的替换计算
代码: 全选
#!/usr/bin/perl -w
use strict;
my $total;
while (<>) {
chomp;
$_ = $1 / 1024 if /(\d+)k$/i;
$_ = $1 if /(\d+)m$/i;
$total += $_;
}
print "$total" . "M\n";
http://twitter.com/nothining
Mail: [email protected]
南京的开源活动几乎是0,希望能有人组织下(也可以拉我入伙^_^)
最近在从零开始学习Linux程序设计,加油……
Mail: [email protected]
南京的开源活动几乎是0,希望能有人组织下(也可以拉我入伙^_^)
最近在从零开始学习Linux程序设计,加油……
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 关于awk的替换计算
代码: 全选
#!/usr/bin/env python
# -*- coding: utf-8 -*-
F = lambda x:( x.endswith("K") and float(x.replace("K",""))/1024 ) or float(x.replace("M",""))
with open("./data","r") as f:
l = f.readlines()
L = [ F(i.split(":")[1].strip()) for i in l ]
print str(sum(L)) + " M"