[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
--也许还有更好的方法。
# 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/
本文详细介绍了如何从strace输出中解析等号后的数值序列,并通过一系列命令行操作将其提取出来,最终计算总和。包括使用grep、cut、rev、sed和bc等命令进行数据处理。

被折叠的 条评论
为什么被折叠?



