- 论坛徽章:
- 23
|
本帖最后由 ly5066113 于 2010-08-18 20:21 编辑
- ly5066113@ubuntu:~$ sed --version
- GNU sed version 4.1.5
- Copyright (C) 2003 Free Software Foundation, Inc.
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
- to the extent permitted by law.
- ly5066113@ubuntu:~$ echo '123456789 * 123456789' | sed -f mult.sed
- 15241578750190521
- ly5066113@ubuntu:~$ expr 123456789 \* 123456789
- 15241578750190521
- ly5066113@ubuntu:~$ echo '123456789123456789 * 123456789' | sed -f mult.sed
- 15241578765432099750190521
- ly5066113@ubuntu:~$ expr 123456789123456789 \* 123456789
- expr: *: Numerical result out of range
- ly5066113@ubuntu:~$ echo '123456789123456789 * 123456789' | bc
- 15241578765432099750190521
复制代码 数字越大,计算时间越长,但位数是没有上限的。
没有使用GNU拓展,UNIX下也可以使用。- #! /usr/bin/sed -f
- s/ *//g
- s/\*/;/
- s/\([0-9]\)\([0-9]\);/\1a\2;/
- s/\([0-9]\)\([0-9]\)$/\1a\2/
- : a
- s/\([0-9]\)\([0-9]\)\(aa*\)/\1a\3\2\3/
- t a
- h
- : b
- /;$/!{
- s/\(.*\)\([0-9]\)\(a*\);\(.*\)\([0-9]\)\(a*\)$/\2*\5\3\6,\1;\4\5\6/
- t b
- s/;.*//
- x
- s/[0-9]a*$//
- x
- G
- b b
- }
- s/,\n.*//
- s/$/;0*0=0;0*1=0;0*2=0;0*3=0;0*4=0;0*5=0;0*6=0;0*7=0;0*8=0;0*9=0;1*1=1;1*2=2;1*3=3;1*4=4;1*5=5;1*6=6;1*7=7;1*8=8;1*9=9;2*2=4;2*3=6;2*4=8;2*5=10;2*6=12;2*7=14;2*8=16;2*9=18;3*3=9;3*4=12;3*5=15;3*6=18;3*7=21;3*8=24;3*9=27;4*4=16;4*5=20;4*6=24;4*7=28;4*8=32;4*9=36;5*5=25;5*6=30;5*7=35;5*8=40;5*9=45;6*6=36;6*7=42;6*8=48;6*9=54;7*7=49;7*8=56;7*9=63;8*8=64;8*9=72;9*9=81;/
- : c
- s/\([0-9]\*[0-9]\)\(.*\)\(;\1=\)\([0-9][0-9]*\)/\4\2\3\4/
- t c
- /^[^;]*\*/{
- s/\([0-9]\)\*\([0-9]\)/\2*\1/
- b c
- }
- s/;.*//
- s/a/0/g
- h
- : d
- /^[0-9]*$/!{
- s/,/-/
- s/,.*//
- s/$/-;9aaaaaaaaa98aaaaaaaa87aaaaaaa76aaaaaa65aaaaa54aaaa43aaa32aa21a100/
- : e
- /^--[^a]/!{
- s/^\([0-9a]*\)\([0-9]\)-\([^-]*\)-\(.*;.*\2\(a*\)\2.*\)/\1-\3-\5\4/
- s/^\([^-]*\)-\([0-9a]*\)\([0-9]\)-\(.*;.*\3\(a*\)\3.*\)/\1-\2-\5\4/
- s/-\(aaaaaaaaa\(a\)\)\{0,1\}\(a*\)\([0-9]*;.*\([0-9]\)\3\5\)/-\2\5\4/
- b e
- }
- s/^--\([^;]*\);.*/\1/
- G
- s/\n[0-9]*,[0-9]*//
- h
- b d
- }
复制代码 |
评分
-
查看全部评分
|