正则表达式
Regular Express
-使用"一串符号"来描述共同的属性的数据
正则表达式 可以配合某工具对文档进行过滤筛选
基本正则列表
正则符号 | 描述 |
^ | 匹配行首 |
$ | 匹配行尾 |
[ ] | 集合,匹配集合中的任意单个字符 |
[ ^ ] | 对集合取反 |
. | 匹配任意单个字符 |
* | 匹配前一个字符任意次数(不允许单独使用) |
\{n,m\} | 匹配前一个字符n-m次 |
\{n\} | 匹配前一个字符n次 |
\{n,\} | 匹配前一个字符n次及以上 |
\(\) | 保留 |
grep ".*" 匹配任意
grep "ro\{1,3\}t user 匹配r后面1到3个o最后t rot root rooot
正则符号 | 描述 |
+ | 最少匹配一次 |
? | 组多匹配一次 |
{n,m} | 匹配n到m次 |
() | 组合为整体,保留 |
| | 或者 |
\b | 单词边界 |
egrep "ro+"user 匹配r后面一个以上o
grep "0:\{2\}" user = egrep "(0:{)2}" user匹配两个0:
egrep 过滤工具
常用命令选项
-i 忽略字母大小写
-v :条件取反
-c:统计匹配的行数
-q:静默,无任何输出,一般用于检测
-n:显示除匹配结果所在行号
--color:标红显示匹配字符串
Sed命令解析
sed工具概述
流示编辑器
-非交互,基于模式匹配过滤及修改文本
-逐行处理,并将输出到屏幕
-可实sed使用方式现对文本的输出,替换,复制,剪切,导入,导出等各种操作
sed使用方式
1.前置命令|sed选项(定址)指令
2,sed选项(定址符)指令 被处理的文件
选项 -n 屏蔽默认输出
-r 支持扩展正则
-i写入文件
指令 p 输出
d删除
s替换
sed 'p' user 输出user文件的所有行,有默认输出
sed -n 'p' user 输出user文件的所有行,没有默认输出
sed -n '1p' user 输出第1行
sed -n '2p' user 输出第2行
sed -n '3p' user 输出第3行
head -2 user | tail -1
sed -n '1,3p' user 输出1-3行
sed -n '1p;3p' user 输出第1行和第3行
sed -n '1,+2p' user 输出第1行以及后面2行
sed -n '3,+1p' user 输出第3行以及后面1行
sed -n '1~2p' user 输出奇数行
sed -n '2~2p' user 输出偶数行
sed -n '/root/p' user 输出有root单词的行
sed -n '/^root/p' user 输出以root开头的行
sed 'd' user 删除所有行
sed 1d' user 删除第1行
sed '5d' user 删除第5行
sed '1,3d' user 删除1~3行
sed '1d;3d' user 删除第1行和第3行
sed '3+2d' user 删除第3行以及后面2行
sed '/bash$/d' user 删除以bash结尾的行
替换:
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 #为文件中每个大写字母添加括号
-----------------------------------------------------------------------------------------------------------------------------------------------------
编写脚本实现匿名上传
#!/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