Could somebody please educate me on why bashing it would be preferable?
Could somebody please educate me on why bashing it would be preferable?
Bash is a much better glue language than python. If all your script does is to call other programs that do all the work, it is very likely you can write it as a single line shell script. In python, you'll have to import libraries, call functions with many arguments, and whatnot.
* Succinctness: When you mostly glue together other programs, Bash will often be shorter than Python.
* Familiarity/Ubiquity: If you're using a Unix-like you're already using Bash (probably; or another shell that's similar) as your main "REPL to the system". When you wanna automate a thing you can start off with what you've already been doing for that task and go from there. Similar story for experimenting when writing a script, though Python also has a REPL for that.
Bash is a prototype to the app in Python that is a prototype to the app in Golang.
There are so many assumptions baked in to the early tools that a complete rewrite just bypasses.
$ ldd /usr/bin/grep
linux-vdso.so.1 (0x00007ffed59ab000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f387c8cf000)
libc.so.6 => /lib64/libc.so.6 (0x00007f387c705000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f387c6e3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f387c9aa000)
$ du -ch /usr/bin/grep `readlink -f /lib64/libpcre.so.1` `readlink -f /lib64/libc.so.6` `readlink -f /lib64/libpthread.so.0`
168K /usr/bin/grep
484K /usr/lib64/libpcre.so.1.2.12
3.1M /usr/lib64/libc-2.31.so
312K /usr/lib64/libpthread-2.31.so
4.0M totalOverall, I don't even know what the point of this kind of questioning even is.
The regex crate has many more benchmarks: https://github.com/rust-lang/regex/blob/master/bench/log/07/... and https://github.com/rust-lang/regex/blob/master/bench/log/07/... for example.
And then there are things like this which can impact the performance of real world use cases: https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#pcr...
Please don't draw sweeping conclusions about the comparative performance of regex engines from a single benchmark.
The bash step is fast to write as it subsumes all the process calling / management.
JS (or python) is a reasonable next step, often just a tight cli wrapper around a function to be called in bash that is hard to write in bash / is from a library. I find its normally easier to pack JS dependencies for these one offs than python, but both work.
Next step is perf/testing focused. Js works as a great first step here as the Promises & event loop let you get a whole bunch of perf naturally that is a pita to arrange in python.
Now you have a program laid out and usage tested that can be re-written in something else for real or percieved benefits (go, bash, c++, rust)