【Linux从零开始】:5.正则表达式相关知识

   基础正则表达式:                                                                               

   1.语系对正则表达式的影响:   

    不同的语系对各种字母的编码顺序是不同的

      例如 LANG=C 时 : 0 1 2 3 4... A B C...a b c...z

         LANG=zh_CN时 : 0 1 2 3 4... A a B b C c...z

     当我们写[A-Z]的时候,2种语系所囊括的字符是不同的,所以,写正则表达式之前一定要先确定语系噢。

   2.为了避免语系不同所造成的编码问题,所以又一些特殊符号可以代表相对应的字符:   

特殊符号 代表意义
[:alnum] 代表英文大小写字符以及数字: 0-9 A-Z a-z 
[:alpha] 代表任何大小写字符: A-Z a-z
[:digit] 代表数字: 0-9
[:lower] 所有小写字符: a-z
[:upper] 所有大写字符: A-Z

  3. 命令工具的使用:   

  1. grep:

    -a : 将binary文件以text文件的方式查找数据;
      -c : 计算找到 '查找字符串' 的次数;
       -i : 忽略大小写;
      -n : 顺便输出行号;
      -v : 反向选择;
      --color=auto : 将找到的关键字高亮(一般自动开启) 可以使用alias 来设定: alias grep='gerp --color=auto' (unalias来解除设置)
      -A : 后面可加数字, 为after的意思,除了列出该行外,后续的n行也会列出
    -B : 后面可加数字, 为before的意思,除了列出该行外,前面的n行也会列出

   4.基础正则表达式字符:   

RE字符 意义与范例
^word

意义:待查找字符串出现在行首

范例:grep -n '^abc' temp.txt

word$

意义:待查找字符串出现在行尾

范例: grep -n 'r$' temp.txt

.

意义:代表此位置一定有一个任意字符的字符

范例: grep -n 'abc.abc' temp.txt   

\

意义:转义字符,将特殊的符号的特殊意义去除

范例: grep -n \' temp.txt 查找包含'的行

*

意义:重复零个或者多个符号前的字符

范例: grep -n 'gg*' temp.txt 会查找出包含g,gg,ggg...的行

[list]

意义:包含RE中的一个字符(选择一个)

范例: grep -n 'ab[12345] temp.txt 查找初包含ab1 ab2 ab3...的行

[n1-n2]

意义:[list]的特例

范例:[A-Z] [0-9]  也可以使用[[:alnum]] [[:alpha]]

 [^list]

意义:不出现^后的字符

注意:^符号在[]中表示不出现之后字符,在''中表示句首

\{n,m\}

意义:连续n到m个之前字符,m为无穷大的时候可以省略

范例:grep -n 'go\{2,3\}' temp.txt 

   

正则表达式当然是非常有用的,同时还有awk等几个工具也都非常方便,但由于最近也不怎么用的上,所以就先了解到这,之后需要再深入研究吧.

原文地址:https://www.cnblogs.com/VortexPiggy/p/2443416.html