[20121212]把每行的数据加起来最快的方法.txt

本文详细介绍了如何从strace输出中解析等号后的数值序列,并通过一系列命令行操作将其提取出来,最终计算总和。包括使用grep、cut、rev、sed和bc等命令进行数据处理。
[20121212]把每行的数据加起来最快的方法.txt

# grep "^08:44:11" aa1
08:44:11 pread(18, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\350\336\0\0\0\0\0\0\0\3 \nhW\344D"..., 16384, 16384) = 16384
08:44:11 pread(19, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\350\336\0\0\0\0\0\0\0\3 \nhW\344D"..., 16384, 16384) = 16384
08:44:11 pread(20, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\350\336\0\0\0\0\0\0\0\3 \nhW\344D"..., 16384, 16384) = 16384
08:44:11 pread(18, "\25\302\0\0\'\0\0\0v\206B\0\377\377\1\4\363\322\0\0\0\0000\0\0\0\0\0\0\0\0\0"..., 16384, 638976) = 16384
08:44:11 pread(18, "\25\302\0\0)\0\0\0v\206B\0\377\377\1\4\371X\0\0\0\0\0\0\0\0\0\0\350\vo%"..., 16384, 671744) = 16384
08:44:11 pread(18, "\25\302\0\0.\0\0\0v\206B\0\377\377\1\4\276\211\0\0\0\220\1\0|v\0\0\1\0\0\0"..., 16384, 753664) = 16384
08:44:11 pread(18, "\25\302\0\0,\0\0\0008\206B\0\377\377\1\4|\325\0\0\17\0\0\0v\252\244M\0\0\30\237"..., 16384, 720896) = 16384
08:44:11 pread(18, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\350\336\0\0\0\0\0\0\0\3 \nhW\344D"..., 16384, 16384) = 16384
08:44:11 pread(18, "\25\302\0\0\'\0\0\0v\206B\0\377\377\1\4\363\322\0\0\0\0000\0\0\0\0\0\0\0\0\0"..., 16384, 638976) = 16384
08:44:11 pread(18, "\25\302\0\0)\0\0\0v\206B\0\377\377\1\4\371X\0\0\0\0\0\0\0\0\0\0\350\vo%"..., 16384, 671744) = 16384
08:44:11 pread(18, "\25\302\0\0\245\3\0\0\2228@\0\377\377\1\4J\336\0\0\335\1\0\0\210\1\0\0\4\7\211/"..., 16384, 15286272) = 16384
08:44:11 pread(18, "\25\302\0\0\274\3\0\0+\211@\0\377\377\1\4\262\264\0\0\372\1\0\0\304\7\0\0\333M\221/"..., 16384, 15663104) = 16384
08:44:11 pread(18, "\25\302\0\0\17\4\0\0\203|A\0\377\377\1\4]n\0\00001_000002988"..., 1048576, 17022976) = 1048576
08:44:11 pread(18, "\25\302\0\0\365\3\0\0\276\5A\0\377\377\1\4\7\204\0\0O\2\0\0H\n\0\0p%\236/"..., 425984, 16596992) = 425984
08:44:11 pread(18, "\25\302\0\0\245\3\0\0\2228@\0\377\377\1\4J\336\0\0\335\1\0\0\210\1\0\0\4\7\211/"..., 16384, 15286272) = 16384
08:44:11 pread(18, "\25\302\0\0\273\3\0\0!\211@\0\377\377\1\4\265\260\0\0\372\1\0\0\304\7\0\0\333M\221/"..., 458752, 15646720) = 458752
08:44:11 pread(18, "\25\302\0\0\245\3\0\0\2228@\0\377\377\1\4J\336\0\0\335\1\0\0\210\1\0\0\4\7\211/"..., 294912, 15286272) = 294912
08:44:11 pread(18, "\25\302\0\0\307\1\0\0$/@\0\377\377\1\4\16j\0\0,\26\210/\26\4\1\0\226r\0\0"..., 32768, 7454720) = 32768
08:44:11 pread(18, "\25\302\0\0\274\3\0\0+\211@\0\377\377\1\4\262\264\0\0\372\1\0\0\304\7\0\0\333M\221/"..., 16384, 15663104) = 16384
08:44:11 pread(18, "\25\302\0\0\365\3\0\0\276\5A\0\377\377\1\4\7\204\0\0O\2\0\0H\n\0\0p%\236/"..., 16384, 16596992) = 16384
08:44:11 pread(18, "\25\302\0\0\33\5\0\0\334\362>\0\377\377\1\4\222u\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 21413888) = 1048576
08:44:11 pread(18, "\25\302\0\0\333\4\0\0\26\370=\0\377\377\1\4\24H\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 20365312) = 1048576
08:44:11 pread(18, "\25\302\0\0\237\4\0\0006\23=\0\377\377\1\4\357\316\0\0\0\0\0\0\0\0\0\0\231\233-/"..., 983040, 19382272) = 983040
08:44:11 pread(18, "\25\302\0\0\245\3\0\0\2228@\0\377\377\1\4J\336\0\0\335\1\0\0\210\1\0\0\4\7\211/"..., 16384, 15286272) = 16384
08:44:11 pread(18, "\25\302\0\0\274\3\0\0+\211@\0\377\377\1\4\262\264\0\0\372\1\0\0\304\7\0\0\333M\221/"..., 16384, 15663104) = 16384
08:44:11 pread(18, "\25\302\0\0C\4\0\0=cB\0\377\377\1\4x\27\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 17874944) = 1048576

-- 这个是一个strace的输出,我要把等号后面的数字加起来。

# grep "^08:44:11" aa1 | cut -f2 -d'='
 16384
 16384
 16384
 16384
 16384
 16384
 16384
 16384
 16384
 16384
 16384
 16384
 1048576
 425984
 16384
 458752
 294912
 32768
 16384
 16384
 1048576
\0\377\377\1\4\24H\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 20365312)
\0\377\377\1\4\357\316\0\0\0\0\0\0\0\0\0\0\231\233-/"..., 983040, 19382272)
 16384
 16384
cB\0\377\377\1\4x\27\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 17874944)

--这样由于里面的字符有多余的等号=,无法实现。
--如何实现取后面的数值呢?
--想起以前一篇文档提到无用的rev命令。

# grep "^08:44:11" aa1 | rev | cut -f1 -d'=' | rev | xargs echo | vim -c '+1,$s/ /+/g' + '+wq /tmp/bb1' - > /dev/null 2>&1 ;bc < /tmp/bb1
6668288
--虽然使用两行命令,但是还是挺简洁的。

# grep "^08:44:11" aa1 | rev | cut -f1 -d'=' | rev | xargs echo | sed 's/ /+/g' | bc -l
6668288

# grep "^08:44:11" aa1 | rev | cut -f1 -d'=' | rev | sed -e 's/$/+/g' -e '$s/+$//g'| xargs echo| bc -l
6668288

--也许还有更好的方法。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-751058/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267265/viewspace-751058/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值