简单的说,正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为, 正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字符串的处理程序!
正规表示法基本上是一种『表示法』, 只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用。例如 vi, grep, awk ,sed 等工具。
注意正规表示法与通配符是完全不一样的东西,通配符是bash接口的一个功能,但正规表示法是一种字符串处理的表示方式。
1、基础正规表示法
以grep为例
1)、grep
下面是语系的特殊符号了解一下:
2)、grep的一些进阶选项
3)、grep使用举例
搜寻特定字符串:grep -n 'the' regular_express.txt
利用中括号[] 来搜寻集合字符:grep -n 't[ae]st' regular_express.txt
行首与行尾字符^ $:grep -n '^the' regular_express.txt
grep -n '\.$' regular_express.txt
因为小数点具有其他意义(底下会介绍),所以必须要使用跳脱字符(\)来加以解除其特殊意义!
任意一个字符. 与重复字符*:
. (小数点):代表『一定有一个任意字符』的意思;
* (星星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态
限定连续RE 字符范围{}:grep -n 'o\{2\}' regular_express.txt ,因为{ 与} 的符号在shell 是有特殊意义的,因此, 我们必须要使用跳脱字符\ 来让他失去特殊意义才行。
4)、基础正规表示法汇整如下:
以sed为例:
自行学习
2、延伸的正规表示法
简化指令的操作,延伸型正规表示法可以透过群组功能 | 来进行一次搜索,表示或的意思,注意grep的延伸命令为egrep,在延伸型命令中多了几个重要的特殊符号。
3、文件的格式化相关处理
格式化打印:printf
printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt)
awk:也是好用的数据处理工具
相比较于sed常常用作一整个行的处理,awk则比较倾向于一行中分成数个字段来处理,也是一行一行进行处理
awk 主要是处理『每一行的字段内的数据』,而默认的『字段的分隔符为"空格键" 或"[tab]键" 』!
last -n 5 | awk '{print $1 "\t" $3}'
4、文件比对工具
纯文本档的比对使用diff,而cmp则用来比对非纯文本
同时,也能够藉由diff 建立的分析檔, 以处理补丁 (patch) 功能的文件,将旧的文件升级成为新的文件。