正则表达式

文本处理工具

sort 命令

sort命令:按行对文件的内容进行排序,也可以根据不同的数据类型进行排序

命令 含义
-f 忽略大小写
-b 忽略每行前面的空格
-n 按照数字进行排序
-u 表示去重,相同的数据和仅显示一行
-o 输出的文件名 把sort排序后的结果输出到指定的文件

uniq命令

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

语法:uniq 选项 文件名

选项 含义
-c 统计连续重复的行的次数,并且合并重复的行
-u 显示仅出现一次的行(包括不连续出现的重复行)
-d 仅显示重复出现的行(必须是连续的重复行)

tr命令

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

语法:tr 选项 参数

选项 含义
-c 保留字符集1的字符,用其他字符来替换字符集2
-d 删除属于字符集1的字符
-s 将重复出现的字符串压缩成一个,用字符集2替换字符集1
-t 替换字符集,默认的,可以不加

cut命令

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

语法:cut 选项 参数

选项 含义
-d 指定分隔符(默认分隔符是tab)
-f 指定要截取的字段
-b 以字符的单位进行截取
-c 以字符的单位进行截取
--complement 排除指定的字段
-output-delimiter 更改输入内容的分隔符

面试题:文件合并的方法是什么,区别是什么?

cat 1 2 > 3 上下合并

paste 1 2 > 3 左右合并

split 命令

split:文件拆分

选项 含义
-l 按行分割
-b 按文件大小分割

正则表达式

基本正则表达式

基本正则表达式 grep

使用正则表达式,匹配内容最好使用引号引起来,避免出现歧义

元字符:

元字符 含义
. 任意单个字符
\ 转义符
[0-9] 匹配文件内容的任意单个数字
[a-z] 匹配文件内容的任意单个小写字母
[A-Z] 匹配文件内容的任意单个大写字母
[[:blank:]] 空白字符,空格
() 分组
[^] 取反

表示次数

表示次数 含义
* 任意字符,表示匹配前面的任意字符,0次,尽可能多的匹配
.* 匹配任意长度的字符,最少要有一个,也就是匹配所有
? 匹配前面的字符0次或者1次,可有可无
\ + 匹配前面的字符,最少出现1次,有且>=1
\ {n \} 匹配前面的字符等于多少次
\ {m,n\} 匹配前面的字符最少m次,最多n次
\ {,n \} 匹配前面的字符最多n次,只要比n小,都算
\ {n, \} 匹配前面的字符最少n次,只要比n大,都算

位置锚定

符号 含义
^ 以什么开头
$ 以什么结尾
^$ 空格

^root$:以root开头和结尾的,那一行只能有这一个单词

词首锚定和词尾锚定:\b

分组:()

逻辑或符号:|

扩展正则

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

扩展正则的元字符和基本正则一样

表示次数

表示次数 含义
* 任意字符,表示匹配前面的任意字符,0次,尽可能多的匹配
.* 匹配任意长度的字符,最少要有一个,也就是匹配所有
? 匹配前面的字符0次或者1次,可有可无
+ 匹配前面的字符,最少出现1次,有且>=1
{n } 匹配前面的字符等于多少次
{m,n} 匹配前面的字符最少m次,最多n次
{,n } 匹配前面的字符最多n次,只要比n小,都算
{n, } 匹配前面的字符最少n次,只要比n大,都算

练习

统计当前主机的连接状态

c 复制代码
ss -antp | grep -v '^State' | cut -d ' ' -f 1 | sort | uniq -c

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

c 复制代码
cat  /var/log/nginx/access.log   |  cut  -d   ""  -f  1 | sort  |  uniq  -c

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

c 复制代码
grep "sh$" /etc/passwd

查找/etc/inittab中含有"以s开头,并以d结尾的单词"模式的行

c 复制代码
grep -E "\bs[a-z]+d\b" /etc/inittab

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

c 复制代码
ifconfig ens33 | grep -Eo "\b([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b"

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

c 复制代码
grep -E "[bash]{4}$" /etc/passwd

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

c 复制代码
grep -E "[a-zA-Z0-9,/]:+[a-zA-Z0-9,/]|:[0-9a-zA-Z/]" /etc/passwd
相关推荐
巨人张8 分钟前
信息素养Python编程题
开发语言·python
东阳马生架构10 分钟前
订单初版—5.售后退货链路中的技术问题说明文档
java
小小寂寞的城15 分钟前
JAVA策略模式demo【设计模式系列】
java·设计模式·策略模式
阿猿收手吧!32 分钟前
【计算机网络】HTTP1.0 HTTP1.1 HTTP2.0 QUIC HTTP3 究极总结
开发语言·计算机网络
JAVA学习通32 分钟前
图书管理系统(完结版)
java·开发语言
abigalexy39 分钟前
深入Java锁机制
java
paishishaba39 分钟前
处理Web请求路径参数
java·开发语言·后端
七七七七0740 分钟前
C++类对象多态底层原理及扩展问题
开发语言·c++
神仙别闹41 分钟前
基于Java+MySQL实现(Web)可扩展的程序在线评测系统
java·前端·mysql