Shell正则表达式

通配符和正则表达式的区别

通配符用于文件名的匹配

正则表达式用于匹配文件内容

元字符

匹配符功能
匹配任意单个字符,可以是一个汉字
[ … ]匹配指定范围内的任意单个字符
[ ^… ]匹配指定范围外的任意单个字符
^ [ … ]匹配以…开头的
.   #表示匹配任意字符
[.  ] #方括号中的就是本身的含义
/.  #同上
匹配符功能
[:alnum:]字母和数字
[:alpha:]代表任何英文大小写字符, A-Z, a-z
[:upper:]大写字母,[A-Z]
[:lower:]小写字母,[a-z]
[:blank:]空白字符
[:space:]包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白
[:cntrl:]不可打印的控制字符
[:digit:]十进制数字
[:xdigit:]十六进制数字
[:print:]可打印字符
[:graph:]可打印的非空白字符
[:punct:]标点符号
[:space:][:blank:]的范围广
匹配符功能
\w匹配单词构成部分
\W匹配非单词构成部分
\s匹配任何非空白字符
\S匹配任何空白字符,包括空格、制表符、换页符等等

表示匹配次数

匹配符功能
*匹配前面的字符任意次,包括0次
.*任意长度的任意字符,不包括0次
匹配其前面的字符出现0次或1次
+匹配其前面的字符出现最少1次
{n}匹配前面的字符n次
{m,n}匹配前面的字符至少m次,至多n次
{,n}匹配前面的字符至多n次,<=n
{n,}匹配前面的字符至少n次

提取ip地址

[root@localhost ~]# ifconfig ens33|grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+'|head -n1
192.168.118.20    #当前主机ip地址

位置锚定

匹配符功能
^行首锚定
$行尾锚定
^$空行
^ [[:space:]]*$空白行
\ < 或 \b词首锚定
\ > 或 \b词尾锚定
\BPATTERN\b匹配整个单词
[root@localhost ~]# cat /etc/passwd | grep -o '\b[a-zA-Z]\+\b'|wc -l
331

[root@localhost ~]# cat /etc/passwd | grep "^[^#[:space:]]"  | wc -l
43

扩展正则表达式

grep -E
-E 表示使用扩展正则表达式
匹配符功能
*匹配前面子表达式0次或者多次
.*任意长度的任意字符
?匹配前面子表达式0次或者1次,即:可有可无
+与星号相似,表示其前面字符出现一次或多次,但必须出现一次,>=1
{n,m}匹配前面的子表达式n到m次
{m}匹配前面的子表达式m次
{n,}匹配前面的子表达式不少于n次, >=n
{,n}匹配前面的子表达式最多n次,<=n
l用逻辑或方式指定正则表达式要是用的模式
()字符串分组,将括号中的字符串作为一个整体
[root@localhost ~]# ifconfig ens33 | grep netmask| grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'|head -n 1
192.168.118.20              #用扩展正则表达式提取ip地址

tr命令

tr命令用于字符转换或字符删除

选项功能
-c除了指定的字符之外的所有字符都会被替换
-d表示删除指定的字符
-s表示压缩重复的字符为单个字符
[root@localhost ~]# echo "1     5" | tr -s ' '
1 5
#使用tr -s后只剩下一个空格

cut命令

cut命令可以提取文本数据中指定的列
cut命令可以根据指定的字符位置或指定的字段分隔符来截取文本,并将结果输出到标准输出或指定的文件

基本格式

cut [选项] 文件
选项功能
-d指定字段的分隔符,默认为制表符
-f指定要提取的字段列表,字段列表之间使用逗号分隔
-c指定要提取的字符位置列表,字符位置列表之间使用逗号分隔
–complement提取指定字段或字符位置之外的内容
cut -f1 file.txt
提取文件的第一列

cut -f2,4,5 -d',' file.txt
提取第二,四,五列,并用逗号作为分隔符



cut -c1-5 file.txt
提取文件的前5个字符


cut -f 2 --complement file.txt
提取文件的除第一列以外的所有列

sort命令

sort命令用于对文本文件进行排序,默认以字母排序

基本格式

sort [选项] file
选项功能
-b忽略行首的空白字符
-r以倒序方式进行排序
-f忽略大小写进行排序
-n按照数值大小进行排序
-u去除重复的行
-t指定字段分隔符
-k指定按照字段排序

uniq命令

用于找出或删除文本文件中出现的重复行

选项功能
-c在输出结果中显示出每行出现的重复次数
-d只显示出重复的行
-u只显示出不重复的行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值