正则表达式

开始系统学习Linux,先从基础的来

正则表达式

最简单的就是grep命令,他截取的是整行的数据

切换Linux系统语言

LANG=en

exportLANG

例1搜索特定字符串

例如搜索the这个字符串:

grep-n'the'filename

如果反向选择呢?也就是说,当该行没有the这个字符串时:

grep-vn'the'filename

例2利用[]来搜寻集合字元

如果要搜索test或taste这两个单字时,可以发现其实他们有共同的't?st'存在,这时候,可以这样来搜寻:

grep-n't[ae]st'filename

其实[]里面不论有几个字元,他都代表某一个字元,所以上面例子说明了,我需要的字符串是"tast"或"test"两个字符串而已,而如果想要搜寻到有oo的字元时,则使用:

grep-n'oo'filename

如果结果包含good这个词,我们不想要g,可以在集合字元的反向选择[^]来达成

grep-n'[^g]oo'filename

这样'只'含有good的那个结果就不会搜索出来。但是如果一行包含'good'和'tool'的话,还是会被搜索出来。

含有goooooole这样的结果也会被搜索出来,因为可能是(ooo)的情况。

再假设oo前面不想有小写字母,就可以这样写[^abcd....z]oo,但是这样似乎不怎么方便,由于小写字元的ASCII上编码的顺序是连续的,因此,我们可以将之简化为底下这样∶

grep-n'[^a-z]oo'filename

也就是说,当我们在一组集合字元中,如果该字元组是连续的,例如大写英文/小写英文/数字等等,就可以使用[a-z],[A-Z],[0-9]等方式来书写,那么如果我们的要求字串是数字与英文呢?呵呵!就将他全部写在一起,变成∶[a-zA-Z0-9]

例如,我们要取得有数字的那一行,就这样∶

grep-n'[0-9]'filename

例三行首与行尾字元^$:

我们在例题一当中,可以查询到一行字串里面有the的,那如果我想要让the只在行首列出呢?这个时候就得要使用定位字元了!我们可以这样做∶

grep-n'^the'filename

如果我想要开头是小写字元的那一行就列出呢?可以这样∶

grep-n'^[a-z]'filename

如果我不想要开头是英文字母,则可以是这样∶

grep-n'^[^a-zA-Z]'filename

TOBECONTINUED...

相关推荐