开始系统学习Linux,先从基础的来
正则表达式
最简单的就是grep命令,他截取的是整行的数据
切换Linux系统语言
LANG=en
export LANG
例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
TO BE CONTINUED...
正则表达式
最简单的就是grep命令,他截取的是整行的数据
切换Linux系统语言
LANG=en
export LANG
例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
TO BE CONTINUED...