- Bash Cookbook
- Ron Brash Ganesh Naik
- 414字
- 2021-07-23 19:17:34
Using wildcards and regexes
As we saw in the previous section, there was this new concept of recursive functions and the introduction of wildcards. This section will extend upon those same fundamental primitives to create more advanced searches using regexes and globbing.
It will also extend them with a number of built-in Bash features, and some one-liners (nifty tricks) to enhance our searches. In short:
- A wildcard can be: *, {*.ooh,*.ahh}, /home/*/path/*.txt, [0-10], [!a], ?, [a,p] m
- A regex can be: $, ^, *, [], [!], | (be careful to escape this)
Globbing basically refers to a far more computer-eccentric term, which can be simply described in layman terms as extended pattern matching. Wildcards are the symbols used to describe patterns, and regex is short for regular expression, which are terms used to describe the pattern that is to match a series of data.
As we can imagine, globbing and pattern matching are really useful, but they cannot be used by every utility or application. Usually, though, they can be used at the command line with utilities such as grep. For example:
$ ls -l | grep '[[:lower:]][[:digit:]]' # Notice no result
$ touch z0.test
$ touch a1.test
$ touch A2.test
$ ls -l | grep '[[:lower:]][[:digit:]]'
-rw-rw-r-- 1 rbrash rbrash 0 Nov 15 11:31 z0.test
-rw-rw-r-- 1 rbrash rbrash 0 Nov 15 11:31 a1.test
Using the ls command, which is piped into grep with a regex, we can see that after we touch three files and re-run the command that the regex allowed us to correctly filter the output for files starting with a lowercase character, which are followed by a single digit.
If we wanted to further enhance grep (or another command), we could use any of the following:
- [:alpha:]: Alphabetic (case-insensitive)
- [:lower:]: Lowercase printable characters
- [:upper:]: Uppercase printable characters
- [:digit:]: Numbers in decimal 0 to 9
- [:alnum:]: Alphanumeric (all digits and alphabetic characters)
- [:space:]: White space meaning spaces, tabs, and newlines
- [:graph:]: Printable characters excluding spaces
- [:print:]: Printable characters including spaces
- [:punct:]: Punctuation (for example, a period)
- [:cntrl:]: Control characters (non-printable characters like when a signal is generated when you use Ctrl + C)
- [:xdigit:]: Hexadecimal characters
- Implementing VMware Horizon 7(Second Edition)
- Mastering QGIS
- 軟件測試項目實戰之性能測試篇
- Practical DevOps
- 數據結構與算法JavaScript描述
- Learn Programming in Python with Cody Jackson
- Full-Stack Vue.js 2 and Laravel 5
- C語言實驗指導及習題解析
- HTML5與CSS3基礎教程(第8版)
- UVM實戰
- C語言程序設計
- JBoss:Developer's Guide
- 深度學習原理與PyTorch實戰(第2版)
- RocketMQ實戰與原理解析
- Visual Basic程序設計實驗指導及考試指南