正则表达式一-基础命令及字符
- 一、常用命令补充:
- 1.grep:
- 2.sort:
- 3.uniq:快速去重
- 4.tr:
- 5.cut:
- 6.split:文件拆分
- 7.paste:合并文件
- 8.例题应用:
- 二、正则表达式:
- 1.定义:
- 2.作用:
- 3.通配符:
- 4.正则表达式:
一、常用命令补充:
1.grep:
(1)作用:对文本进行过滤,支持正则表达式,针对行进行处理。
(2)常用选项:
选项 | 作用 |
---|---|
-i | 忽略字符大小写,可有可无。 |
-v | 显示不被pattern匹配到的行,即取反。 |
-w | 匹配整个单词。 |
-f | file根据模式文件,处理两个文件相同内容,把第一个文件作为匹配条件。 |
-n | 显示匹配的行号。 |
-c | 统计匹配的行数。 |
-e | 实现多个选项间的逻辑or关系。 |
-r | 递归目录,但是不处理软连接。 |
-E | 使用ERE,相当于egrep,使用扩展正则。 |
-o | 仅显示匹配到的字符串。 |
-A | 匹配当前行及他后面的行。 |
-B | 匹配当前行及他前面的行。 |
-R | 递归目录,处理软连接。 |
(3)运用:
1.-m # 匹配指定次后停止
[root@test1 opt]# grep -m 1 root /etc/passwd#多个匹配只取第一个
root:x:0:0:root:/root:/bin/bash
2.-v #显示不被pattern匹配到的行,即取反
[root@test1 opt]# grep -v root /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
3.grep -c root /etc/passwd
[root@test1 opt]# grep -c root /etc/passwd
4.grep -A3 root /etc/passwd #匹配到的行的后3行也显示出来
[root@test1 opt]# grep -A3 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
5.将非空行写入到test.txt文件
[root@test1 opt]# cat wang.txt
nubobo
jioioo
nioioboi
94949494
12121212
21212121
040404040404
6161616161616161
[root@test1 opt]# vim wang.txt
[root@test1 opt]# cat wang.txt | grep -v '^$' > test.txt
[root@test1 opt]# cat test.txt
nubobo
jioioo
nioioboi
94949494
12121212
21212121
040404040404
6161616161616161
2.sort:
以行为单位,对文件内容进行排序,也可根据不同类型进行排序。
(1)常用选项:
选项 | 作用 |
---|---|
-f | 忽略大小写,默认情况下,大写字母排在前面。 |
-b | 忽略每行前面的空格,只排序不改缩进。 |
-n | 按数字进行正向排序。 |
-r | 按数字进行反向排序。 |
-u | 去重,去掉重复内容。 |
-o | 将排序后的结果输出到指定文件。 |
(2)应用:
1.忽略每行空格:
2.正向,反向排序:
3.去重:
3.uniq:快速去重
(1)格式:
1.cat 文件名 | uniq 选项
2.uniq 选项 参数
(2)常用选项:
选项 | 作用 |
---|---|
-c | 统计重复的行的次数,并且合并重复的行 |
-u | 显示仅出现一次的行(不连续重复出现的行也算出现一次) |
-d | 显示重复出现的行(连续重复出现) |
(3)应用:
1.统计重复出现的行的次数:
[root@test1 opt]# cat wang.txt | uniq -c
2 wangz
3 billkin
4 pp
2.去重排序:
[root@test1 opt]# cat wang.txt | uniq -c wang.txt | sort -n
2 1billkin
3 2wangz
4 3pp
4.tr:
(1)作用:对来自标准输入的字符进行替换,压缩,删除。
(2)常用选项:
选项 | 作用 |
---|---|
-d | 删除字符集1的字符 |
-c | 保留字符集1的字符,其他字符用字符集2替换 |
-s | 把重复出现的字符串压缩成一个,把前一个替换成后一个 |
-t | 替换,默认选项,可以不加 |
(3)应用:
1.替换
2.压缩:
3.把重复出现的字符串替换为一个:
4.echo $PATH | tr -s “:” “\n” —把":"替换为换行
5.cut:
(1)格式:
1.cut 选项 参数
2.cat file | cut 选项
(2)常用选项:
选项 | 作用 |
---|---|
-d | 指定分隔符 |
-f | 按字段截取,跟上数字即表示截取第几段 |
-b | 以字节为单位截取 |
-c | 以字符为单位截取 |
-complemnt | 排除所有指定字段 |
-out-delimiter | 更改输出内容的分割符 |
(3)应用:
1.指定字段截取:
2.删除:
3.转换分隔符:
6.split:文件拆分
(1)常用选项:
选项 | 作用 |
---|---|
-l | 按行拆分 |
-b | 指定大小拆分 |
(2)格式:
1.split -b 指定大小 文件名 新文件名
2.split -l 指定行数 文件名 新文件名
7.paste:合并文件
(1)格式:
paste [选项] 文件1 文件2
(2)常用选项:
选项 | 作用 |
---|---|
-d | 用于指定文件的分隔符(默认情况下为制表符"\n") |
-s | 将列和行的内容进行互相交换 |
(3)cat和paste的区别:
8.例题应用:
(1)统计当前主机连接状态:
[root@test1 opt]# ss -nta | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c
1 ESTAB
11 LISTEN
(2)统计主机连接数:
[root@test1 ~]# ss -nt | tr -s " " | cut -d " " -f 4 | sort -n | uniq -c
1 Local
2 192.168.174.12:22
二、正则表达式:
1.定义:
由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。
2.作用:
主要用来匹配字符串(命令结果,文本内容)。
3.通配符:
(1)定义:只用于匹配文件名,目录名,不匹配文件内容。
(2)作用:为了方便用户对文件或者目录的描述,例如用户仅仅需要以".sh"结尾的文件时,使用通配符就能很方便地实现。各个版本的shell都有通配符,这些通配符是一些特殊的字符,用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。shell将与与命令行中指定的匹配规则符合的所有文件名或者路径名作为命令的参数,然后执行这个命令。
(3)常用选项:
选项 | 作用 |
---|---|
* | 匹配一个或多个字符 |
? | 匹配任意一个字符 |
4.正则表达式:
(1)元字符:
选项 | 作用 |
---|---|
. | 匹配任意一个单个字符,可以是汉字 |
() | 使用转义符,只表示() |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
[[:blank:]] | 空白字符(空格和制表符) |
[:space:] | 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广 |
(2)使用:
1.[root@test1 opt]# ls /opt/ | grep "t." #过滤出仅包含字母"t"后跟任何其他字符的行
2.ls /opt/ | grep '[fhtx].txt' #匹配[]中任意一个字符
3.ls | grep '[^a.z].txt' #“[^a.z]”表示不匹配字母“a”或“z”的任何字符
4.grep [[:space:]] wang.txt #过滤空格
(3)匹配次数:
选项 | 作用 |
---|---|
* | 匹配前面字符的任意次数,包括0次,贪婪模式,尽可能长的匹配。 |
.* | 任意长度的任意字符,不包括0次,即匹配所有。 |
? | 匹配其前面的字符出现0或1次,即可有可无。 |
\+ | 匹配其前面的字符至少出现1次,即肯定有且>=1次。 |
\{n\} | 匹配其前面的字符出现n次。 |
\{m,n\} | 匹配其前面的字符至少出现m次,至多n次。 |
\{,n\} | 匹配其前面的字符至多出现n次,<=n。 |
\{n,\} | 匹配其前面的字符至少出现n次。 |
次,即可有可无。 |
| \+
| 匹配其前面的字符至少出现1次,即肯定有且>=1次。 |
| \{n\}
| 匹配其前面的字符出现n次。 |
| \{m,n\}
| 匹配其前面的字符至少出现m次,至多n次。 |
| \{,n\}
| 匹配其前面的字符至多出现n次,<=n。 |
| \{n,\}
| 匹配其前面的字符至少出现n次。 |