正则表达式
开始系统学习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...