grep命令:主要作用就是过滤查找文本内容
常用的选项有:
-m 数字:匹配几次之后停止,按行匹配,不是按字符个数,例如
-v:取反
例如:
-n:显示匹配的行号
例如:
-c:仅显示匹配的行数,不显示匹配内容
例如:
-o:仅显示匹配的内容
例如:
-q:静默模式,只输出,无结果
例如:
-A 数字:After 后几行
例如:
-B 数字:显示匹配到的行,以及前几行
例如:
-C 数字:匹配前后个几行
例如:
-e :实现多个过滤条件之间的逻辑或关系
例如:
-w:匹配整个单词
例如:
-E:使用扩展正则表达式
例如:
-f:根据模式文件进行匹配,匹配两个文件相同的内容
例如:相同的内容会标红
-r :递归目录,但是不处理软连接。匹配目录中文本的内容
例如:
-R:递归目录,这是处理软连接。匹配目录中文本的内容
例如:
文本三剑客:grep主要的就是查
sed主要是增和改
awk按行取列
都是针对文本的内容
sort:按照行对文件内容进行排序。也可以根据不同的数据类型进行排序
用法格式:
1.sort 选项 参数
2.cat 文件名 | sort 选项
常用的选项有:
假如:test1.txt文本内容是:
-f :忽略大小写,默认会把大写字母排在前面
例如:
-b:忽略每行前面的空格
例如:
-n :按照数字进行排序
例如:
-r:反向排序
例如:
-u:相同的数据只显示一行。也就是去重
例如:
-o:将排序后的文件内容转存到指定文件
例如:
uniq:也是按行进行处理。作用就是连续重复的行进行去重
用法格式:
1、uniq 选项 参数
2、cat 文件名 | uniq 选项
常用的选项有:
-c:统计连续重复出现的行的次数,并且合并重复的行,并展示
例如:
-u :显示仅出现一次的行
例如:
-d:显示仅重复出现的行
例如:
tr:字符替换 压缩 删除
用法格式:
1、tr 选项 参数
2、cat 文件名 | tr 选项
常用的选项有:
-c:保留字符集1的字符,其他字符用字符集2进行替换
例如:
-d:删除字符集
例如:
-s:可以将重复出现的字符串压缩为一个字符串
例如:
-t: 默认的,可以不加,这是替换。字符集2替换成字符集1
例如:
实验:将PATH中的:替换成空格
实验:将PATH中的:替换成换行
cut: 快速裁剪,也就是对字段进行截取与裁剪
用法格式:
1、cut 选项 参数
2、cat 文件 | cut 选项
常用的选项:
-d:指定裁剪的分隔符(默认的分隔符是tab的空格)
-f:按行取列,根据第几个字段进行截取
例如:
什么到什么是:1-3
什么和什么是:1,3
-b:以字节为单位,进行截取
-c:以字符为单位,进行截取
-b 和-c :不咋用就不演示了
--complement :排除所指定的字段
例如:
--output-delimiter: 更改输出结果的分隔符
例如:
面试题:如何对文件进行拆分:
现有一个日志文件,很大将近5G,直接打开速度很慢,有什么办法优化呢?
文件进行拆分:
splie可以将大文件拆分成若干小文件gr
-l:指定行数进行拆分
例如:
-b:指定大小进行拆分
例如:
真正工作最好以下方法使用
面试题:合并文件
cat合并和paste有什么区别:
cat合并是上下合并
paste合并是左右合并
工作中肯定是cat合并更好
实验:统计当前主机的连接状态:
答案:
实验:统计当前主机的连接数
[root@test1 opt]# ss -nt | tr -s " " | cut -d " " -f 4 | sort -n | uniq -c
以上都是针对文件的内容进行操作
正则表达式:由一类特殊字符以及文本字符所编写的模式
其中有些字符不表示字符字面的含义。而表示控制或者通配的功能,用来处理文本内容当中的字符
也就是由一些特殊字符组成的特定格式的内容,用来匹配文件当中的内容。
问题1:ls输出的内容算不算文本内容
答案:算
PS:Linux中所有命令所显示的所有有内容,都算是文本内容
Linux当中的通配符:通配符用来匹配文件名或者目录名。
*:任意一个或者多个字符。
例如:
?:只能匹配任意一个字符
例如:
[]:范围匹配
例如:
正则表达式:
元字符:
. :匹配任意单个字符,或者是一个汉字
例如:
\ :转义符
例如:
():分组的意思 \(\)
() 使用转义符,只表示()
[]:匹配指定范围内的单个字符
[[:blank:]]:匹配空格和制表符
[^a] :除了a以外,取反
例如:
所有的元字符:
. 匹配任意单个字符,可以是一个汉字
() 使用转义符,只表示\(\)
[] 匹配指定范围内的任意单个字符,示例:[dn] [0-9] [] [a-zA-Z]
[^] 匹配指定范围外的任意单个字符,示例:dn a.z
[:alnum:] 字母和数字 [0-9] [a-z] [0-9] [a-z]
[:alpha:] 代表任何英文大小写字符,亦即 [A-Z], [a-z]
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母 [A-Z]
[[:blank:]] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
\w #匹配单词构成部分,等价于[[:alnum:]]
\W #匹配非单词构成部分,等价于[^[:alnum:]]
\S #匹配任何非空白字符。等价于 \f\n\r\t\v。
\s #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
表示次数:
*:表示匹配前面的字符任意次,包括0次。尽可能长的匹配
例如:
.*:匹配前面的任意字符任意次,但是不包括0次
例如:
\?:表示匹配前面的字符出现0次或者一次
例如:
\+:匹配前面出现的字符最少一次,最多任意次。也就是>=1
例如:
\{n\}:表示前面的字符只能出现=n次
例如:
\{n,m\}:表示前面的字符最少有n次,最多有m次
例如:
\{,n\}:表示前面的字符,最多有n次,0次也算
例如:
\{n,\}:表示前面的字符,最少有n次
例如:
实验:将ifconfig ens33中的地址与子网掩码还有广播地址单独列出来