正则表达式

目录

如何针对文件内容进行匹配或者过滤

grep 

sort

uniq

tr 

cut

split

paste

正则表达式

正则表达式

基本正则

表示次数的表达式

位置锚定

分组

扩展正则

实验


如何针对文件内容进行匹配或者过滤

grep 

针对文本内容进行过滤,也就是查找

常用选项

-i 忽略大小写 默认的
-n 显示匹配的行号
-c 显示匹配的行数
-v 取反,要找的不显示
-m 多个匹配时,可以限定显示的行数,可理解为匹配几次之后停止
-o 仅显示匹配到的字符串
-A 匹配所在行以及下几行
-B 匹配所在行以及上几行
-C 匹配所在行以及上下几行
-e 逻辑或,可以匹配多个条件,实现多个选项间的逻辑关系
-w 匹配整个单词
-E 使用扩展正则表达式 egrep也可以使用扩展正则表达式
-f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容
-r 递归目录,不处理软连接
-R 递归目录,处理软连接

grep的作用就是过滤文本内容,是针对行来进行处理


sort

以行为单位对文件的内容进行排序,也可以根据不同的数据类型进行排序

sort 选项 参数
cat 文件名 | sort 选项

常用选项

-f 忽略大小写,默认会把大写字母排在前面
-b 忽略每行前面的空格
-n 按照数字进行排序
-r 反向排序
-u 相同的数据只显示一行,去重
-o 输出文件名  将排序后的结果转存到指定文件
 
字母和数字不要混在一块排序


uniq

去重命令,用于报告或者忽略文件中连续出现的重复行,经常与sort结合使用
uniq 选项 参数
cat 文件名 | uniq 选项

常用选项

-c 统计连续重复的行的次数,并合并打印重复的行,不会改变文件内容
-u 显示仅出现一次的行,包括不连续的重复行
-d 仅显示重复出现的行,必须是连续的重复行

tr 

对来自标准输入的字符进行替换、压缩和删除
tr 选项 参数
也可以结合管道符使用

常用选项

-c 保留字符集1的字符,用字符集2来替换其他的字符集
-d 删除指定的字符集
-s 把重复出现的字符串压缩成—个字符串,也可以替换
-t 默认就是替换,可以不加

主要用来替换和删除
用的做多的是删,把不要的部分删除

cut

截取,与awk有相似之处
对字段进行截取和裁剪
cut 选项 参数
cat 文件名 | cut 选项

常用选项

-d 指定分隔符 默认分隔符是tab,不是空格,要用引号引起来 awk的默认分隔符为空格
-f 按字段进行截取,指定要截取第几个字段,1-3 表示1到3,1,3表示1和3
-b 以字节为单位截取
-c 以字符为单位截取
--complement 删除指定字段
--output-delimiter 更改输出内容的分隔符

split

文件拆分,大文件拆分成若干小文件
-l 指定行数拆分
-b 指定文件大小拆分
拆分后面要加自定义名称,方便识别 面试题

paste

文件合并      
paste a b 和cat a b之间的区别  面试题
paste是左右合并
cat是上下合并

不加重定向输出就是临时展示

统计当前主机的连接状态
listen 监听、等待连接
estab 已经建立连接,连接处于活动状态
 ss -antp | grep -v "^State" | sort | cut -d " " -f 1 | uniq -c

统计当前主机连接数
ss -nt | grep -v "^State" | tr -s " "| cut -d " " -f 4 | sort | uniq -c

文本处理三剑客
grep
sed
awk

正则表达式

正则表达式:由一类特殊字符及文本字符所编写的一种模式,处理文本当中的内容。其中的一些字符不表示字符的字面含义,表示控制或者通配的功能

通配符:用于匹配文件名和目录名,不能匹配文件的内容
正则表达式:可以匹配命令结果、文本内容

通配符 

* 匹配任意一个或者多个字符
?匹配任意一个字符
[] 匹配范围内的任意单个字符 如[0-9][a-z][A-Z]


正则表达式

1、基本正则表达式
2、扩展正则表达式
区别仅限于写法上,其他的没有任何不同

基本正则

字符匹配,元字符
. 表示匹配任意的单个字符,可以是一个汉字
\ 表示转义符    \. 就是一个点
() 表示分组的意思   \(\) 
[] 匹配指定范围内的任意单个字符 如[0-9][a-z][A-Z]
[^]取反,指定范围之外的
[[:space:]] 包含空格、tab键、换行空格、回车空格
[[:blank:]] 空白字符,只包含空格和tab键(制表符)

通配符不能完全匹配大小写,真正区分大小写要用正则表达式

表示次数的表达式

* 表示匹配前面的字符任意次,有多少匹配多少,没有也行。贪婪模式
.* 匹配任意长度的字符,至少要有一次,不能没有
\? 匹配前面的字符0次或者1次
\+ 匹配前面的字符至少1次
\{n\} 匹配前面的字符等于n次
\{m,n\} 匹配前面的字符最少m次,最多n次
\{,n\} 匹配前面的字符最多n次
\{m,\} 匹配前面的字符最少m次

位置锚定

^ 以什么为开头,在模式的左侧
$ 以什么为结尾,在模式的右侧
^root$ 匹配整行,且只有一个root
^$ 匹配空行

词首锚定
<或者\b
词尾锚定
>或者\b
\<root\> 匹配整个单词

分组

\(root\)
\| 表示逻辑或

扩展正则

与基本正则差不多,但无\
要用grep -E

实验

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

cat /etc/passwd | grep -E ".?:*:.?"

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

cat /etc/passwd | grep "bash$"

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值