正则表达式

正则表达式在shell中的应用

正则表达式在shell中的应用。可以跟在grep,vi,awk,sed等命令之后,主要是根据某些条件查询数据,主要用途是对结果(显示)进行筛选。
grep 常用参数介绍
grep  -E  正则表达式用法 E我感觉为RE(正则)简写
grep -o 只保留后面正则匹配到的内容
grep -V  去反(不包括满足正则条件的数据)
grep -P 另一个正则引擎

元字符

元字符的作用主要是匹配的规则,我目前是这样理解的。
元字符功能备注
.匹配出换行符以外的任意单个字符
*前导字符出现n次或者连续多次
^以XXX开头的^XX
$以XXX结尾的XXX$
^$空行
[]匹配括号里的任意单个字符或一组单个字符
[^]不匹配括号里的任意单个字符或一组单个字符
1匹配以括号里的任意单个字符或一组字符的开头
()匹配多个字符
{n,m}匹配前导字符出现n次与m次之间[0-9]{1,3}

使用方法

把握一个原则,轻松搞定可恶的正则符号:
我要找什么?
找数字 [0-9]
找字母 [a-zA-Z]
找标点符号 [[:punct:]]
我要如何找?
看心情找
以什么为首 ^key
以什么结尾 key$
包含什么或不包含什么 [abc] ^[abc] [^abc] ^[^abc]
我要找多少呀?
找前导字符出现0次或连续多次 ab*
找任意单个(一次)字符 ab.
找任意字符 ab.*
找前导字符连续出现几次 {n} {n,m} {n,}
找前导字符出现1次或多次 go+
找前到字符出现0次或1次 go?

例子

测试文本
-----------------------------------------------------
   # vim test.txt 
Aieur45869Root0000
9h847RkjfkIIIhello
rootHllow88000dfjj
8ikuioerhfhupliooking
hello world
192.168.0.254
welcome to uplooking.
abcderfkdjfkdtest
rlllA899kdfkdfj
iiiA848890ldkfjdkfj
abc
12345678908374
123456@qq.com
123456@163.com
abcdefg@itcast.com23ed

1. 查找一个数字和一个字母连起来的
1.grep -E ‘[0-9][a-Z]|[a-Z][0-9]’ test.txt

2.grep -E ‘[0-9][a-z|A-Z]|[a-z|A-Z][0-9]’ test.txt
这里的-E表示用正则表达式去匹配
2. 查找不以r开头的行
1.grep -v 2 test.txt

2.grep [r] test.txt
这里的-v表示不取这些匹配的 类似于逻辑运算中的’非’
3.查找以数字开始
grep 3 test.txt
4.查找以字母开始的

grep ‘4’ test.txt

grep ‘5’ test.txt
5.查找以.结尾的字符
grep ‘\.$’ test.txt

6.查找A后有三个数字的行
grep -E ‘A[0-9]{3}’ test.txt

7.去掉空行
grep -v ‘^$’ test.txt (^表示以xx开头,XX$表示以XX结尾,两者连到一起就是 : 空)

8.查找带有adc的行
grep abc test.txt

grep ‘\(abc\)’ test.txt

这里grep的 abc和下面的表达的含义是一样的,从形式上看就是把括号进行了转义.可能直接grep的查找方式就约等于\(XXX\)
9查找配置文件中的ip地址
grep ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’ /etc/sysconfig/network-scripts/ ifcfg-eno16777736


  1. ↩︎

  2. r ↩︎

  3. 0-9 ↩︎

  4. A-Za-z ↩︎

  5. a-Z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值