正则表达式
Regular Express
-使用"一串符号"来描述共同属性的属性
正则表达式 可以配合某工具对文档进行过滤筛选
grep ".*" user 匹配任意
grep "ro\{1,3\}t" user 匹配r后面1到3个o最后t rot root rooot
\b 旁边不能是数字,字母,下划线
egrep "ro+" user 匹配r后面1个以上o
grep "\(0:\)\{2\}" user = egrep "(0:){2}" user 匹配两个0:
egrep过滤工具
格式1:egrep [选项] '正则表达式' 文件.. ..
格式2:前置命令 | egrep [选项] '正则表达式'
egrep等同于grep -E表示允许使用扩展的正则表达式
常用命令选项
-i :忽略字母大小写
-v:条件取反
-c:统计匹配的行数
-q:静默,无任何输出,一般用于检测
-n:显示除匹配结果所在行号
--color:标红显示匹配字串
范围内单字匹配
sed命令解析
sed工具概述
流式编辑器
-非交互,基于模式匹配过滤及修改文本
-逐行处理,并讲输出到屏幕
-可实现对文本的输出,删除,替换,复制,剪切,导入,,导出等各种操作
sed使用方式
1,前置命令 | sed 选项(定址符)指令
2,sed 选项 (定址符)指令 被处理的文件
选项: -n 屏蔽默认输出
-r 支持扩展正则
-i 写入文件
指令 p 输出
d 删除
s 替换
sed -n '1p;10p' lianxi 显示第一行和第十行
sed -n '1,10p' lianxi 显示第一行到第十行
sed -n '3,+5p' lianxi 查看第三行以及后面五行
sed -n '1~2p' lianxi 输出奇数行
sed -n '2~2p' lianxi 输出偶数行
sed -n '/root/p' lianxi 输出有root的行
sed -n '/^root/p' lianxi 输出root开头的行
删除就是把p换成d
sed 's/2017/xxxx/' test #将每行第一个2017换成XXXX
sed '2s/2017/xxxx/' test #将第二行第一个2017换成XXXX
sed 's/2017/xxxx/2' test #将每行第二个2017换成XXXX
sed 's/2017/xxxx/g' test #将每行所有的2017换成XXXX
sed -n 's/2017/xxxx/p' test #将所有行的2017换成XXXX并显示
sed 's/.//2;s/.$//' nssw #删除文件中每行的第二个,最后一个字符
sed -r 's/(^.)(.*)(.$)/\3\2\1/' nssw.txt #将每一行第一个和最后一个互换
sed -r 's/[1-9]//g' nssw.txt #删除文件中所有的数字
sed -r 's/([A-Z])/(\1)/g' nssw.txt #为文件中每个大写字母添加括号
------------------------------------------------------------------------------------------------------------------------------------
编写脚本,搭建ftp服务,并且实现匿名上传
#!/bin/bash
yum -y install vsftpd >& /dev/null
sed -i '/#anon_u/s/^#//' /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
systemctl enable vsftpd
chmod 777 /var/ftp/pub
sed工具的多行文本处理
sed工具的多行文本处理操作:
- i: 在指定的行之前插入文本
- a:在指定的行之后追加文本
- c:替换指定的行
-
sed '2a XX' a.txt //在第二行后面,追加XX sed '2i XX' a.txt //在第二行前面,插入XX sed '2c XX' a.txt //将第二行替换为XX