正则表达式

发布于:2024-12-06 ⋅ 阅读:(19) ⋅ 点赞:(0)

正则表达式:

正则表达式区别于通配符,正则表达式是用来匹配文本的内容,命令的输出结果也属于文本内容。也可以使用正则表达式。

通配符用来匹配文件名和目录名。

grep用来过滤文本内容,以匹配要查询的结果。

linux的文本三剑客

grep--------------->查找文本内容

sed

awk

-m数字 匹配几次后停止:

grep  -m 1 root /etc/passwd #查找包含root行

-v 取反

-i 默认的可以不加

-n 显示文本的行号

-c统计匹配的行数

-o只显示匹配的字符串

-q 静默模式

-A   数字 after 包含匹配到的行,以及后几行

-B 数字   包含匹配到的行,以及前几行

-C 数字  包含匹配到的行,以及前后各几行

-w 匹配整个单词

-E 使用扩展正则表达式 egrep=grep -E

-f 匹配两个文件中的相同内容,以第一个文件的内容为准

-r  递归目录,查找文件内容,软连接的内容不包含

-R  递归目录,查找文件内容,包含软连接的内容

sort命令:

按行对文本的内容进行排序,也可以根据不同的数据类型进行排序。

-f 忽略大小写

-b 忽略每行前面的空格

-n 按照数字进行排序

-u 去重,相同的数据仅显示一行

-o 输出的文件名:把sort排序后的结果,输出到指定的文件

uniq 去重,用于统计或者忽略文件中连续出现的重复行,一般和sort结合使用

uniq 选项  文件名

cat 文件名 | uniq 选项

-c 统计连续重复的行的次数,并且合并重复的行

-u  显示仅出现一次的行 (包括不连续重复的行)

-d 仅显示重复出现的行  (必须连续重复的行)

tr 用来对标准输入的字符串进行替换,压缩和删除

tr 选项 参数

echo "字符串" | tr 选项

-c 保留字符集1的字符,用其他字符来替换字符集2

-d 删除属于字符集1的字符

-s 将重复出现的字符压缩成一个,用字符集2替换字符集1   

\n 相当于  回车

-t 默认带t ,替换字符集,一般不加

cut 截取,对字段进行截取和裁剪

cut 选项  参数

cat 文件名 | cut 选项

-d 指定分隔符(默认分隔符是tab)

-f 指定截取的字段

-b 以字符的单位进行截取

-c 以字符的单位进行截取

--complement: 排除指定的字段

-output-delimeiter :更改输出内容的分隔符

以 :为分隔符,截取 /etc/passwd 的1-3列

文件合并的方法是什么,区别是什么?

cat 1 2 > 3           上下合并

paste 1 2 >3      左右合并

文件拆分:  有一个日志文件,8G,直接打开速度很慢,有什么办法提高速度?

拆分

split

-l 按行分割

-b 按文件大小分割

统计当前主机的连接状态

统计nginx的访问日志当中多次出现的ip地址:

正则表达式:

按照一定格式和符合来匹配文件内容(命令输出的结果)

通配符:用来匹配文件名或者目录名

* :表示任意一个或多个字符

?: 任意的单个字符

[a-z]

[A-Z] 匹配任意单个字符

[0-9]

正则表达式的格式:

基本正则表达式  grep

扩展正则表达式 grep -E =egrep

元字符:

. :任意单个字符

\. :表示转义符

[0-9]:匹配文件内容的任意单个数字

[a-z]:匹配文件内容的任意单个小写字母

[A-Z]:匹配文件内容的任意单个大写字母

使用正则表达式,匹配内容最好是用引号引起来

[[:blank:]]  空白字符,空格

() :分组

[^] :取反

*:任意字符,表示匹配前面的任意字符,0次,尽可能多的匹配

.*:匹配任意长度的字符,最少要有一次,也就是匹配所有

\?:匹配前面的字符0次或者1次,可有可无

\+:匹配前面的字符,最少出现1次,有且>=1

\{n\}:匹配前面的字符等于多少次

\{m,n\}:匹配前面的字符最少m次最多n次

\{,n\}:匹配前面的字符最多是n次,只要比n小,都算

\{n,\}:匹配前面的字符最少n次,只要比n大,都算

位置锚定

以什么为开头^

以什么为结尾 $

空白行: ^$

^root$:匹配整个单词,且这一行只有这个单词

词首锚定

\b

词尾锚定

\b

分组和逻辑条件

分组: ()

或:    \|

扩展正则:

grep -E

sed -r

egrep

表示次数:

*:任意字符,表示匹配前面的任意字符,0次,尽可能多的匹配

.*:匹配任意长度的字符,最少要有一次,也就是匹配所有

?:匹配前面的字符0次或者1次,可有可无

+:匹配前面的字符,最少出现1次,有且>=1

{n}:匹配前面的字符等于多少次

{m,n}:匹配前面的字符最少m次最多n次

{,n}:匹配前面的字符最多是n次,只要比n小,都算

{n,}:匹配前面的字符最少n次,只要比n大,都算

案例

1、显示/etc/passwd中以sh结尾的行;


2、查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行;


3、查找ifconfig命令结果中的1-255之间的整数;


4、在/etc/passwd中取出默认shell为bash的行;


5、高亮显示passwd文件中冒号,及其两侧的字符


网站公告

今日签到

点亮在社区的每一天
去签到