LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1162|回复: 8

awk 能不能计算这样的文本 ‘1234*5678' ?

[复制链接]
发表于 2009-3-16 22:57:59 | 显示全部楼层 |阅读模式
awk 能不能计算这样的文本:
‘1234*5678'
$ echo '1234*5678' | awk '{print $NF*1}'
1234

得出的不是想要的结果:7006652
发表于 2009-3-17 01:50:11 | 显示全部楼层
echo 1 | awk '{print 1234 * 5678}'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-17 19:33:46 | 显示全部楼层
如果是文件里面的文本,如何计算?
$cat file.txt
34*58
12*611
101*2886
回复 支持 反对

使用道具 举报

发表于 2009-3-17 20:33:06 | 显示全部楼层
为啥不用bc命令?
cat file.txt | bc
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-17 21:09:29 | 显示全部楼层
用 bc 如果文件很大的话,进行合计会不会有麻烦效率也不高? 用 awk 有没有办法?
回复 支持 反对

使用道具 举报

发表于 2009-3-20 08:58:54 | 显示全部楼层
不一定非得用shell搞计算吧
回复 支持 反对

使用道具 举报

发表于 2009-3-20 14:24:49 | 显示全部楼层
当然不是非要用。但是在处理数据时有时用shell+bc or gawk比较方便。

QUOTE=bosomfriend;1963410]不一定非得用shell搞计算吧[/QUOTE]
回复 支持 反对

使用道具 举报

发表于 2009-3-20 14:26:49 | 显示全部楼层
: echo 1234 5678|gawk '{ print $1*$2 }'

Post by openfree;1962404
用 bc 如果文件很大的话,进行合计会不会有麻烦效率也不高? 用 awk 有没有办法?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-20 18:59:38 | 显示全部楼层
谢谢各位,
  1. echo 1234 5678|gawk '{ print $1*$2 }'
复制代码
变通一下可以了。
[HTML]echo -ne '122 1*2*3*4\n ok 5*6\nend 7*8*9' | awk '{split($2,a,"*");t=1;for (i in a)t=a*t; tt=tt+t}END{print tt}'
[/HTML]
其实,是用来计算网页上显示的文件的总大小,提高了难度变成计算文本中的算数表达式:)
如果只是用awk计算文件总的大小,可能简便一些,例如这样的页面计算所有文件大小的总和:
[HTML]EFI                   03/12/2009          08:12:00 AM
File:GPL         18 KB         07/03/2007         12:00:00 AM
Packages                 03/19/2009         06:50:00 PM
File:README-BURNING-ISOS-en_US.txt         11 KB         02/27/2009         10:38:00 PM
File:RPM-GPG-KEY-fedora-10-primary         3 KB         03/10/2009         02:24:00 AM
File:RPM-GPG-KEY-fedora-ia64         2 KB         03/10/2009         02:24:00 AM
File:RPM-GPG-KEY-fedora-primary         2 KB         03/10/2009         02:24:00 AM
RPM-GPG-KEY-fedora-test                 01/29/2009         08:34:00 AM
File:RPM-GPG-KEY-fedora-test-10-primary         3 KB         03/10/2009         02:24:00 AM
File:RPM-GPG-KEY-fedora-test-11-primary         2 KB         03/10/2009         02:24:00 AM
RPM-GPG-KEY-fedora-test-i386                 01/29/2009         08:34:00 AM
File:RPM-GPG-KEY-fedora-test-ia64         2 KB         03/10/2009         02:24:00 AM
RPM-GPG-KEY-fedora-test-ppc                 01/29/2009         08:34:00 AM
RPM-GPG-KEY-fedora-test-ppc64                 01/29/2009         08:34:00 AM
File:RPM-GPG-KEY-fedora-test-primary         2 KB         03/10/2009         02:24:00 AM
RPM-GPG-KEY-fedora-test-x86_64                 01/29/2009         08:34:00 AM
images                 03/19/2009         06:49:00 PM
isolinux                 03/19/2009         06:49:00 PM
repodata                 03/19/2009         06:50:00 PM[/HTML]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表