Benchmark Bash fastest replace with tr sed awk perl

Test String (10xX):

___XXXXX_____XXXXX_____

Test Cases Results must look like:

single char remove:

___XXXX_____XXXXX_____

single char replace:

___0XXXX_____XXXXX_____

string/multi char remove:

_____________

string/multi char replace:

___00000_____00000_____

Times:

run the test string from file 100000 times.

single char remove single char replace multi char remove multi char replace string remove string replace
sed 5.658s 5.774s 3.449s 5.929s 3.476s 5.724s
perl regex 5.604s 5.918s 3.428s 6.027s 3.482s 5.870s
awk gsub 3.469s 5.892s 3.339s 5.942s
tr bash 5.972s 5.897s
perl tr  5.996s  5.837s

 

For bash its the easiest way to use sed because its simpler to use perl and it could do the most things or if you do simple things you could use tr.In perl you could see this benchmark.

SED 4.2.2

single char remove:

time cat bench.txt | sed 's/X//'

single char replace:

time cat bench.txt | sed 's/X/0/'

multi char remove:

time cat bench.txt | sed 's/X//g'

multi char replace:

time cat bench.txt | sed 's/X/0/g'

string remove:

time cat bench.txt | sed 's/XXXXX//g'

string replace:

time cat bench.txt | sed 's/XXXXX/00000/g'

 

AWK 4.0.1

single replace with regex not possible.

multi char remove:

time cat bench.txt | awk '{gsub("X","",$1);print $1;}'

multi char replace:

time cat bench.txt | awk '{gsub("X","0",$1);print $1;}'

string remove:

time cat bench.txt | awk '{gsub("XXXXX","",$1);print $1;}'

string replace:

time cat bench.txt | awk '{gsub("XXXXX","00000",$1);print $1;}'

 

TR 8.21

single replace and remove not possible.

multi char replace:

time cat bench.txt | tr "X" "0"

string replace:

time cat bench.txt | tr "XXXXX" "00000"

 

PERL REGEX 5

single char remove:

time cat bench.txt | perl -lpe 's/X//'

single char replace:

time cat bench.txt | perl -lpe 's/X/0/'

multi char remove:

time cat bench.txt | perl -lpe 's/X//g'

multi char replace:

time cat bench.txt | perl -lpe 's/X/0/g'

string remove:

time cat bench.txt | perl -lpe 's/XXXXX//g'

string replace:

time cat bench.txt | perl -lpe 's/XXXXX/00000/g'

 

PERL TR 5

multi char replace:

time cat bench.txt | perl -lpe 's/X/0/g'

string replace:

time cat bench.txt | perl -lpe 's/XXXXX/00000/g'

 

2 thoughts on “Benchmark Bash fastest replace with tr sed awk perl”

  1. Goog article! Like )
    Take for free trust base of forums with Pr from 1 to 9.
    Download file(8 769 trust forums with PR and alexa rank )

    Incrise your positions and get more trafic!!!

  2. Good day I am so glad I found your site, I really found you by error,
    while I was searching on Aol for something else, Regardless I am here now and would just like to say
    kudos for a marvelous post and a all round thrilling blog (I
    also love the theme/design), I don’t have time to look over it all at the minute but I have
    bookmarked it and also included your RSS
    feeds, so when I have time I will be back to read much more, Please do keep up the awesome job.

Leave a Reply

Your email address will not be published.

nineteen + 18 =