正则表达式(含管道符)
管道符的作用:将前面的输出作为后面的输入使用
Grep
-n 过滤内容 目录
-v 取反 过滤内容 目录
-m 1 匹配到x次即停止 过滤内容 目录
-i 匹配不区分大小写
-c 只显示行数
-o 只显示匹配的内容 过滤目录 目录
-q 静默模式 不显示内容,重定向到文件才显示内容
-A数字 匹配到后,将匹配行后x行也显示出来
-B数字 匹配到后,将匹配行前x行也显示出来
-C数字 匹配到后,将匹配行前后x行都显示出来
-e 表示逻辑或 grep -e root -e bash /etc/passwd
-w 精确匹配整个单词
-E 使用扩展正则表达式
-F 不支持正则表达式
-f 处理两个文件的相同内容 (第一个文件内容为参照物)
-r 递归目录和文件,查找出来的是文件的内容
-R 递归目录和所以文件,查找出来的是文件的内容(包括软连
接)
sort命令
以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序。
语法格式:
sort 选项 参数
cat file | sort 选项
常用选项:
-f 忽略大小写,默认大写字母在前
-b 忽略每行前面的空格
-n 按照数字进行排序
-r 反向排序
-u 等同uniq,表示相同的数据去重
-o 将排序后的结果转存至指定目录
(两边加-n ,sort -n -o 不改变顺序转存至指定目录)
uniq---快捷去重
用于报告或者忽略文件中连续的重复行,常与sort命令结合使用
uniq 选项 参数
cat 文件 | uniq 选项
-c 统计乱序重复的行的次数,并且合并重复的行
-u 显示仅出现一次的行
-d 仅显示连续重复的行
tr
常用于对来自标准输入的字符进行替换、压缩和删除
tr 选项 参数
常用选项:
-c 保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d 删除所有属于字符集1的字符
-s 将重复出现的字符串压缩为一个字符串,用字符集2 替换 字符集1
-t 字符集2 替换 字符集1 ,不加也行
cut -----快速裁剪
expr substr 截取方法
cut 选项 参数
cat file | cut 选项 参数
-d 制定分隔符(默认分隔符为Tab)
-f 按字段进行截取,指定第n个字段
-b 以字节为单位进行截取
-c 以字节为单位进行截取
--complement 排除所制定的字段
--output-delimiter 更改输出内容的分隔符
▲split-----文件拆分(日志)
split命令用于linux
-l 指定行数进行文件拆分 (给前缀)
-b 指定大小进行文件拆分 (单位小写即可,后缀名)
paste
按照字段来进行文件的合并
-d 用于指定文件的分隔符(默认情况下为制表符“\n”)
-s 将列和行的内容进行互相交换
paste 文件名 文件名 左右拼接
♢paste a b 和 cat a b 之间的区别
cat 上下拼接 paste左右拼接
★统计当前主机的连接状态
ss -ant | grep -v '^State' | cut -d " " -f 1 | sort | uniq -c
★统计当前连接主机数
ss -nt | tr -s "" | cut -d " " -f 5 | sort -n | uniq -c
变量扫描器------eval
命令字前加上eval,shell会在执行命令前扫描它两次,该命令适用于那些一次扫描无法实现功能的变量,该命令会对变
量进行两次扫描。
正则表达式 Regular Expression
有一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,
类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容。
正则匹配的字是红色,要用引号括起
正则是匹配,不是打印
通配符主要是为了方便用户对文件或者目录的描述。
基本正则表达式
元字符:
. 匹配单个字符,可以是个汉字
[] 匹配指定范围内的任意单个字符,例[0-9]
[^] 匹配指定范围外的任意单个字符,例 [^a.z]
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,即A-Z,a-z
[:lower:] 小写
[:upper:] 大写
[:blank:] 空白字符
[:space:] 包括空格、制表符
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
ls /etc/ | grep 'rc.' 只匹配以rc.开头的文件
ls /etc/ | grep ‘rc\. ’ \转义字符,只是个.
ls | grep "[abcd].txt" 匹配a或b或c或d 开头 加任意字符 加txt的文件
ls | grep '[a-zA-Z].txt' 同时表示大写和小写
ls | grep'[^a-z].txt' 取所有小写的反,即匹配大写
grep [[:space:]] 123.txt 匹配空格
表示次数
* 匹配前面的字符任意次,包括0次
.* 匹配所有,任意长度的任意字符,不包括0次
\? 匹配前面的字符,出现0次或1次
\+ 匹配其前面的字符出现最少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,最多n次
\{,n\} 匹配前面的字符至多n次,最少0次
\{n,\} 匹配前面的字符至少n次
grep ip:
ifconfig ens33 | grep -o '[0-9]\+\.[0-9]\+[0-9]\+[0-9]\+'
ifconfig ens33 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}