基础正则表达式:
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等几个工具也都非常方便,但由于最近也不怎么用的上,所以就先了解到这,之后需要再深入研究吧.