正则表达式

开始系统学习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...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值