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