What's the most simple way to extract substring on Unix shell (with regex)?
- less feature
- less options
- less study
Shell Builtins are good for this too, here is a sample script:
And as per Gnudif above, there are always sed/awk/perl for when the going gets really tough.
Unix shells do not traditionally have regex support built-in. Bash and Zsh both do, so if you use the
You can get the substrings from the
In Zsh, if the
So, most simply: if you're using bash:
If you're not using Bash or Zsh, it gets more complicated as you need to use external commands.
grep and sed are probably the tools you want, depending on the structure of text.
sed should do the trick, if you do not know what the substring is, but know some pattern that is around it.
for example, if you want to find a substring of digits that starts with a "#" sign, you could write something like:
sed 's/^.*#([0-9]+)/\1/g' yourfile
grep could do something similar, but the question is what you need to do with the substring and whether we are talking normal line-end delimited text or not.