1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| $ for ((i=1;i<1000;i++)); do echo "blablabla,blablabla,($i+(34/60)+(54.42/3600)),blablabla,blabla"; done >f
$ time gawk -F ',' 'BEGIN{OFS=FS}{print $3 |& "bc -l" ; "bc -l" |& getline $3}1' f >/dev/null
real 0m0,192s
user 0m0,080s
sys 0m0,060s
$ time { d=','; c=3; f=f; paste -d"$d" <(awk -F"$d" -vc=$c '{for(i=1;i<=c-2;i++) printf("%s"FS,$i); printf("%s\n",$i)}' "$f") <(bc -l < <(awk -F"$d" -vc=$c '{print $c}' "$f")) <(awk -F"$d" -vc=$c '{for(i=c+1;i<=NF-1;i++) printf("%s"FS,$i); printf("%s\n",$NF)}' "$f"); } >/dev/null
real 0m0,149s
user 0m0,069s
sys 0m0,033s
$
$ for ((i=1;i<10000;i++)); do echo "blablabla,blablabla,($i+(34/60)+(54.42/3600)),blablabla,blabla"; done >f
$ time gawk -F ',' 'BEGIN{OFS=FS}{print $3 |& "bc -l" ; "bc -l" |& getline $3}1' f >/dev/null
real 0m1,090s
user 0m0,460s
sys 0m0,331s
$ time { d=','; c=3; f=f; paste -d"$d" <(awk -F"$d" -vc=$c '{for(i=1;i<=c-2;i++) printf("%s"FS,$i); printf("%s\n",$i)}' "$f") <(bc -l < <(awk -F"$d" -vc=$c '{print $c}' "$f")) <(awk -F"$d" -vc=$c '{for(i=c+1;i<=NF-1;i++) printf("%s"FS,$i); printf("%s\n",$NF)}' "$f"); } >/dev/null
real 0m0,756s
user 0m0,382s
sys 0m0,154s
$
$ for ((i=1;i<100000;i++)); do echo "blablabla,blablabla,($i+(34/60)+(54.42/3600)),blablabla,blabla"; done >f
$ time gawk -F ',' 'BEGIN{OFS=FS}{print $3 |& "bc -l" ; "bc -l" |& getline $3}1' f >/dev/null
real 0m11,568s
user 0m5,125s
sys 0m3,762s
$ time { d=','; c=3; f=f; paste -d"$d" <(awk -F"$d" -vc=$c '{for(i=1;i<=c-2;i++) printf("%s"FS,$i); printf("%s\n",$i)}' "$f") <(bc -l < <(awk -F"$d" -vc=$c '{print $c}' "$f")) <(awk -F"$d" -vc=$c '{for(i=c+1;i<=NF-1;i++) printf("%s"FS,$i); printf("%s\n",$NF)}' "$f"); } >/dev/null
real 0m7,800s
user 0m3,796s
sys 0m1,926s
$
$ for ((i=1;i<1000000;i++)); do echo "blablabla,blablabla,($i+(34/60)+(54.42/3600)),blablabla,blabla"; done >f
$ time gawk -F ',' 'BEGIN{OFS=FS}{print $3 |& "bc -l" ; "bc -l" |& getline $3}1' f >/dev/null
real 1m45,943s
user 0m58,371s
sys 0m51,735s
$ time { d=','; c=3; f=f; paste -d"$d" <(awk -F"$d" -vc=$c '{for(i=1;i<=c-2;i++) printf("%s"FS,$i); printf("%s\n",$i)}' "$f") <(bc -l < <(awk -F"$d" -vc=$c '{print $c}' "$f")) <(awk -F"$d" -vc=$c '{for(i=c+1;i<=NF-1;i++) printf("%s"FS,$i); printf("%s\n",$NF)}' "$f"); } >/dev/null
real 0m41,250s
user 0m35,226s
sys 0m18,054s
$ |