1、基础正则表达式
1)[] 、[^]: []内无论有几个字符都只代表一个字符,如[abc]表示a,b,c,中的一个。a,b,c...z用[a-z];A,B,C...Z用[A-Z];0,1,2..9用[0-9]表示;[^]表示反向选择,如[^0-9]表示非数字;[^a-zA-Z]表示非字母。
2)行首^ ,行尾$,等位字符: ^在[]之内是方向选择,在[]之外是行首定位字符。如:^the:表示以the开头的行;^[0-9]表示以数字开头的行。^$:用来搜索空白行。\ 是转义字符,当有些字符有特殊含义时需要用到它。
3)任意一个字符( . )与重复字符( * ): ( . )表示绝对有任意一个字符,如g..d : 能搜出good,但是不能搜出god。(*)表示重复前边0个或是多个的字符。(o*),表示拥有空字符或是一个以上的o字符;(oo*):表示第一个必须是o,第二个o则是可有可无的。例子:(g.*g) : .任意字符,(*)零个或多个重复前边的字符。所以 (.*) 就表示零个或多个任意字符 .
4)限定重复字符的范围 {} ,但是由于 ‘{’ 与 ‘}’在shell中有特殊含义,所以在使用时必须转义,‘\{’ 和‘\}’ ,\{n\}:表示连续重复n个前边字符,\{n,m\}连续重复n-m个前一个字符,\{n,\}连续重复n个以上的前一个字符。
2、扩展正则表达式
说明:grep支持基础正则表达式,但是不支持扩展郑子表达式,egrep=grep -E 就支持扩张正则表达式。
1) + : 重复一个或是一个以上的字符。如: go+d 表示: god,good,goood...但是gd不行,至少一个o。
2) ? : 代表0个或1个字符,如:o?代表空的或是一个o。go?d:表示gd,god。
3)| : 或(or)的方式找出数个字符串。如:gd|good:表示gd或是good。
4) ( ) :找出用户组字符串。如搜索glad和good 由于g,d是重复的,可以用()分组, g(la|oo)d 表示找到glad 和 good 字符串。
3、printf格式化显示工具
4、sed工具
sed 可以用于分析标准输入的数据,然后将数据经过处理后再将它标准输出。处理有: 替换,新增,删除,选取等。
参数:-n : 使用安静模式,经过sed处理的那行才会显示出来。
-e : 直接在命令行上进行sed编辑操作。
-f : 直接将sed的操作写入一个文件内, -f filename 则可以执行filename 内的sed操作。
-r : 使sed操作支持扩展的正则表达式,(默认是基础的正则表达式)。
操作说明:n1,n2 function
function:
a : 新增,a后边可以接字符串,而这些字符串会在新的一行出现(当前的下一行)。
c : 替换,c 后边可以接字符串,这些字符串可以替换 n1,n2之间的行。
d : 删除,因为是删除,所以d通常后边不接任何内容。
i : 插入,i 后边可以接字符串,这些字符串会在新的一行出现,(当前的下一行)。
p : 打印,即打印出某个选择的数据。
s : 搜索,不但可以搜索还可以替换。
范例:显示 /etc/passwd的内容,打印行号,并将2~5行删除, n1 /etc/passwd | sed '2,5d'
5、awk工具
与sed常常用于处理整行想比,awk比较倾向于一行中分成数个“字段”来处理,因此awk用于处理小型的数据。运行模式: awk '条件类型1{动作1} 条件类型2{动作2}...' filename。 awk可以用来处理后续文件,也可以读取来自前一个命令的标准输出。但如前所说,awk主要用来处理“每一行字段内的数据”,默认的字段分隔符为“空格键”或“[Tab]键”
1) $0 : 代表一整行的意思。 $1、$2 为这一行中的第一个第二个参数。
2) 变量: NF: 每一行($0)拥有的字段数。 NR:当前awk所处理的是“第几行”的数据。 FS:当前的分隔符,默认为空格键。
3) 逻辑运算符同C 语言类似。
6、文件比较命令diff cmp