正则表达式,对文件内容进行增删改查
Linux的文本三剑客
Grep:过滤,(查找文本内容--配合正则表达式一块使用) 查
Sed:改
Awk:对行来进行取列,awk自带编程语言,格式是类java
三个都是针对文件内容进行处理
grep
grep 命令都是对行来进行处理,Grep 这个命令主要是方便对日志内容进行过滤
grep -v :取反,只显示没有需要过滤的行
grep -m :多次匹配,只取第一个 , grep -m 1 , m后面要加数字(可自定义)
grep -n : 显示匹配内容以及显示匹配的行号,过滤的内容在文本的第几行会显示出来
grep -o : 仅显示匹配到的字符串,不再输出其他内容,去除冗余信息,只展示需要的
grep -q:什么都不显示,没什么用
grep -A:(after)后几行,显示匹配到行以及匹配行的后几行,grep -A 3”root” 后面跟数字几行可以自己定义
Grep -B:(before)前几行,与-A相反,显示匹配到的行以及祂的前几行,数字自定义
Grep -C :前后各几行,显示匹配到的行以及上几行与下几行,grep -C 3 “gnm” /etc/passwd
Grep -e:逻辑或的关系,grep -e “root” -e “bash” -e “dn” /etc/passwd
Grep -E :使用正则表达式
Grep -f:处理两个文件相同的内容,可以过滤出两个文件的相同内容
Grep -r:递归目录下,所有包含过滤内容的文件以及匹配的内容行,但是不处理软链接(ln -s)
Grep -R:递归目录下,包括软链接,所有包含过滤内容的文件及匹配的内容行
Sort命令
以行为单位对文件内容进行排序,也可以根据不同的数据类型进行排序
格式:sort 加上选项 加上参数 sort test , cat /etc/passwd | sort 选项
Sort -b: 忽略每行前面的空格 ,进行排序,而不是把空格缩进,有空格也不影响排序
Sort -n
按照数字进行排序
Sort -r
按照数字进行反向排序
Sort -u
去除重复,相同的数据行只显示一行
Sort -o
输出文件把排序后的结果,输出到指定的内容文件
(面试题)
怎么不改变源文件的排序顺序,输出到另一个文件中
Cat -n /etc/passwd | sort -o /opt/333.txt 先查看passwd文件按顺序编号,再输出到指定路径文件中排序
uniq
专业去重(快捷去重)uniq :用于报告或者忽略文件中连续的重复行,常与sort命令结合使用
Uniq格式 : uniq 加上选项 加上参数 , 或者cat 文件 | uniq 选项
Uniq -c :统计连续重复的行的次数,合并重复的行
Uniq -u :显示仅出现一次的行,包括不连续的行也仅出现一次
Uniq -d :仅显示重复出现的行,但必须是连续的重复行,如果不是连续重复行不算在内
tr
tr:对字符进行替换 压缩 删除
格式 tr 加上选项 加上参数 Tr -d “%”
Echo 123 | tr 选项
Tr -c :保留字符集1的字符,其他字符用字符集2来进行替换,必须要保留,然后替换,他会多打一个
Tr -d :删除字符集
Tr -s :将重复出现的字符串压缩成一个字符,也可以替换字符集,tr -s 补充一下,多个字符压缩成一个
tr -t :替换,不加-t也行,默认替换
Cut
Cut对字段进行截取和剪裁
格式:cut 加选项 加参数
Cat 文件名 | cut 选项
Cut -d :指定分隔符,可以截取字段
cut -d ‘:’ -f 1-3 /etc/passwd
cut -d ‘:’ -f 1,3 /etc/passwd 以冒号分割符截取1和3列
Cut -b :以字节为单位截取
Cut -c : 以字符为单位截取
Cut -complement :排除所指定的字段
Cut --output-delimiter :更改原内容的分割符
Cut 和awk 有相似之处,都是对行来取列,
cut的默认分割符是tab键,主要是切文本,指定分隔符,指向性越强越好
awk的默认分割符就是空格,会把多个连续的空格当做一个处理
Split
文件拆分:split 可以把文件拆分成若干个小文件
面试题
有一个日志文件----nginx -----nginx.log-------5G,有什么方法提高这个文件的打开速度 split命令对文件进行拆分
split -b 1G /nginx/nginx.log
Split -l:指定行数拆分 (小文件用split -l)
Split -b:指定文件大小进行拆分(大文件用split -b)
Paste 和 cat
Paste cat :分件合并
面试题 :合并分件,paste和cat之间的区别
Paste:左右合并
Cat :上下合并
Paste:左右合并
Cat :上下合并
面试题:如何统计当前主机的链接状态,有多少个linsten(LINSTEN) 有多少个estab(ESTAB)
Ss -nta | grep -v ‘state’ | cut -d “ ” -f 1 | sort | uniq -c
正则表达式
正则表达式:匹配文件内容,根据特点的字符和表达式
Linux下:grep sed awk
Nginx mysql 配置文件也可以支持正则表达式
通配符和正则表达式的区别
通配符匹配的是文件名
正则表达式匹配的是文件内容
*:匹配任意一个或者多个字符
?:匹配任意一个字符
[ ] : 可以是范围匹配,也可以是单个字符
正则表达式
元字符
点 . :匹配任意单个字符,可以是一个汉字
转义符 \ : ‘ \ . ’ 这里的点只是.
():分组, \(\)
[ ]:匹配任意范围内的单个字符,
使用正则表达式,一定要把匹配的内容 ” ” 引起来
[^a-z] : 取反,除了小写a-z,其他都算进去
[[:blank:]]:表示匹配空格或者制表键
[:space:] : 空格tab键 换行符回车 各种类型的空白
[:cntrl:]:退格删除