grep
linux的文本三剑客:grep sed awk
针对文本内容
grep:查找文本内容—配合正则表达式使用
sed:修改
awk:对行进行取列,awk自带编程语言,类java
grep 按行进行处理
-v :取反
-m 数字 筛选内容 文件绝对目录:多个匹配只取第几个
-n :显示匹配内容,以及显示匹配行号
-o :仅显示匹配到的字符串,不再输出其他内容
-A 数字 :显示匹配到的行,以及匹配到的行的后几行
-B 数字 :显示匹配到的行,以及匹配到的行的前几行
-C 数组 :显示匹配到的行,以及匹配到的行的前后各几行(方便对日志内容过滤)
-e :实现多个选项的逻辑或的关系
-E :使用正则表达式
-f :处理两个文件的相同内容
-r :递归目录下所有包含过滤内容的文件,以及匹配的内容行,但是不处理软连接
-R :递归目录下所有包含过滤内容的文件,以及匹配的内容行,但是处理软连接
sort:以行为单位对文件内容进行排序,也可以根据不同的数据类型进行排序
sort 选项 参数
-b :进行排序,有空格也不影响排序
-n :按数字进行排序
-r :反向排序
-u :相同的数据行只显示一行,去重
-o :输出文件,把排序的结果输出到指定的内容文件
面试题:如何不改变源文件的排序顺序,输出到另外一个文件
快捷去重:uniq(用于报告或者忽略文件中连续的重复行,常与sort命令结合使用)
uniq 选项 参数
cat 文件 | uniq 选项
-c :统计连续重复的行的次数,合并重复的行
-u :显示仅出现一次的行(包括不连续的重复行)
-d :仅显示连续重复出现的行
tr:对字符进行替换压缩以及删除
tr 选项 参数
-c :保留字符集1的字符,其他字符用字符集2来进行替换.必须要保留然后替换
-d :删除字符
-s :将重复出现的字符串压缩为一个字符。替换字符集
-t :替换(可以不加)
cut:对字段进行截取和剪裁
cut 选项 参数
cat 文件名 | cut 选项
-d :指定分隔符,来截取字段
-f :对字段进行截取
以冒号为分隔符,截取1-3列
-b :以字节为单位截取
-c :以字符为单位截取
-complement :排除所指定的字段
--output-delimiter :更改原内容的分隔符
cut和awk有相似之处,都是以行来取列
cut的默认分隔符是tab键,主要是切文本,指定的分隔符要明显
awk的默认分隔符就是空格,把多个连续的空格当作一个处理
split:文件拆分,可以把文件拆分成若干个小文件
现在有一个日志文件5G的老文件,有什么方法可以提高这个文件的打开速度
split文件对文件进行拆分
-l :指定行数进行拆分
-b :指定文件大小进行拆分
文件合并:paste cat
合并文件,paste和cat文件之间的区别
paste:左右合并
cat:上下合并
如何统计当前主机的连接状态:
有多少个listen,estab
ss -nta | grep -v ‘state’ | cut -d “ “ -f 1 | sort | uniq -c
正则表达式:匹配文件内容,根据特定的字符和表达式。
linux下:grep sed awk
nginx mysql配置文件也可以支持正则表达式
通配符和正则表达式的区别:
通配符匹配的是文件名:
* :匹配任意一个或多个字符
?:匹配任意一个字符
[]:可以是范围匹配,也可以是单个字符
正则表达式:一定要把匹配内容引起来
元字符
. :匹配任意单个字符
\ :转义符
() :分组
[] :匹配任意范围内的单个字符
[^a-z] :取反
[[:blank:]] :匹配空格或者tab键
[:space:] :空格 tab键 换行符 回车 各种类型的空白
[:cntrl:] :退格 删除