通配符和正则表达式的区别
通配符用于文件名的匹配
正则表达式用于匹配文件内容
元字符
匹配符 | 功能 |
---|---|
匹配任意单个字符,可以是一个汉字 | |
[ … ] | 匹配指定范围内的任意单个字符 |
[ ^… ] | 匹配指定范围外的任意单个字符 |
^ [ … ] | 匹配以…开头的 |
. #表示匹配任意字符
[. ] #方括号中的就是本身的含义
/. #同上
匹配符 | 功能 |
---|---|
[: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 | 只显示出不重复的行 |