linux笔记之正则表达式(一)
基础正则表达式
说明:
- 正则表达式基本上是一种“表达式”, 只要工具程序支持这种表达式,那么该工具程序就可以用来作为正则表达式的字串处理之用。 例如 vi, grep, awk,sed 等等工具,因为她们有支持正则表达式。
重要性:
- 我们谈到的这个正则表达式,与前一章的 BASH 就有点像是数学的九九乘法表一样,是Linux 基础当中的基础。
一:grep工具
- 范例一:用 dmesg 列出核心讯息,再以 grep 找出内含 qxl 那行
[dmtsai@study ~]$ dmesg | grep ‘qxl’ - 范例二:承上题,要将捉到的关键字显色,且加上行号来表示:
[dmtsai@study ~]$ dmesg | grep -n --color=auto ‘qxl’ - 范例三:承上题,在关键字所在行的前两行与后三行也一起捉出来显示
[dmtsai@study ~]$ dmesg | grep -n -A3 -B2 --color=auto ‘qxl’
样例
- 例题一、搜寻特定字串
- [dmtsai@study ~]$ grep -n ‘the’ regular_express.txt
- 想要“反向选择”呢?也就是说,当该行没有 ‘the’ 这个字串
- [dmtsai@study ~]$ grep -vn ‘the’ regular_express.txt
- 例题二、利用中括号 [] 来搜寻集合字符
- [dmtsai@study ~]$ grep -n ‘t[ae]st’ regular_express.txt
- 其实 [] 里面不论有几个字符,他都仅代表某“一个”字符
- 在一组集合字符中,如果该字符组是连续的,例如大写英文/小写英文/数字
等等, 就可以使用[a-z],[A-Z],[0-9]等方式来书写- 取得有数字的那一行
- [dmtsai@study ~]$ grep -n ‘[0-9]’ regular_express.txt
- 我们知道 [:lower:] 就是 a-z 的意思,那么 [a-z] 当然就是 [[:lower:]] 啰。
- 例题三、行首与行尾字符 ^ $
- 想要让 the 只在行首列出呢?
- [dmtsai@study ~]$ grep -n ‘^the’ regular_express.txt
- 那个 ^ 符号,在字符集合符号(括号[])之内与之外是不同的! 在 [] 内代表“反向选择”,在 [] 之外则代表定位在行首的意义!
- 要找出来,哪一行是“空白行”。
- [dmtsai@study ~]$ grep -n ‘^$’ regular_express.txt
- 例题四、任意一个字符 . 与重复字符 *
- 假设我需要找出 g??d 的字串,亦即共有四个字符,起头是 g 而结束是 d ,我可以这样做。
- [dmtsai@study ~]$ grep -n ‘g…d’ regular_express.txt
- 当我们需要“至少两个 o 以上的字串”时,就需要 ooo*
- .* 就代表零个或多个任意字符”的意思啦!
- 如果我想要找出“任意数字”的行列呢?因为仅有数字,所以就成为:
- [dmtsai@study ~]$ grep -n ‘[0-9][0-9]*’ regular_express.txt。
基础正则表达式字符汇整