Linux中简单使用正则表达式


一:基本正则表达式 BRE

1. 五个元字符

1、元字符:^

  • 作用:表示以什么开头
  • 例如:以为root开头 ^root

2、元字符:$

  • 作用:以什么结尾
  • 例如:以root结尾 root$

3、元字符:.

  • 作用:表示任意一个字符
  • 例如:a.b 表示a开头,中间任意一个字符,b结尾的字符

4、元字符:*

  • 作用:表示该符号前面的字符出现0次或多次(默认贪婪模式,会找尽可能离它远的)
  • 例如:a* 表示a出现0次或者多次

5、元字符:[ ]

  • 作用:匹配指定的任意一个字符之一,里面写啥就匹配啥,里面的符号不具备特殊含义(意思就是比如*号在基本正则里面表示表示任意一个字符,但是放在中括号里面后,就是*号这个字符,不包含其它意思)
  • 匹配一个字符:例如:[13578] 表示匹配1或3或5或...
  • 匹配一个范围:例如:[a-z] 表示字符从a-z之间的任意一个
  • 取反:表示不匹配里面的内容 例如:[^abcd] 表示不匹配abcd中的任意一个字符

例如:grep过滤自身进程

ps aux | grep [s]sh

# 解释:grep命令支持基本正则表达式,所以grep [s]sh等价于grep ssh,
# 但是gerp进程里面的参数还是[s]sh(grep --color=auto [s]sh),所以就把gerp进程给过滤掉了。

二:扩展正则表达式 ERE

1. 五个元字符

扩展正则是基本正则的功能延伸和增强,从而实现更复杂和强大的匹配能力。

1、元字符:+

  • 作用: 和 * 号对应,+ 号表示的是1次或者多次

2、元字符:

  • 作用:表示左边一个字符出现0次或者1次
  • 例如:tom? 表示可以匹配tom或tomm
  • 说明:.*?是一个特殊的用法,表示把.*的贪婪模式变为非贪婪模式

3、元字符:|

  • 作用:或者的意思,可以用来连接两个正则表达式
  • 例如:a|b 表示a或b,取其中一个

4、元字符:()

  • 作用:表示一个整体,可以通过 \n 来取括号里的内容。
  • 例如:(tom)(bob)(alice)\2 \2表示得就是第二个括号的内容(bob)

5、元字符:{ }

  • 作用:用于规定左边字符出现的次数
  • 例如:
    {0,} 表示左边的字符出现0或者无穷次,等价于 *
    {1,} 表示左边的字符出现1或者无穷次,等价于 +

三:支持正则的常见命令

grep 命令: 默认支持的是基本正则表达式,如果要使用扩展正则的元字符,需要使用转义字符 \ 进行转义;加上 -E 选项,就可以让grep直接支持扩展正则,即使用扩展元字符不需要加转义字符进行转义;

例如:

ubuntu@node1:~$ ps aux | grep -E 'ssh|apache'

# 如果不加引号,ssh\|apache 会被shell解释为 ssh|apache。grep 接收到的实际模式是 ssh|apache
ubuntu@node1:~$ ps aux | grep  'ssh\|apache'

使用正则表达式的元字符,需要加单引号或者双引号,否则 \ 会被 shell自身解释为转义符

sed 命令: 默认支持的基本正则表达式,如果要使用扩展正而不使用转义字符转义扩展元字符,需要使用 -E 选项。

find 命令: 默认支持的是通配符,加上 --regex 选项后可以支持基本正则表达式

vim 命令:默认支持的是基本正则表达式

[[ ]] 命令:默认就支持扩展正则表达式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值