1. grep 过滤
grep 匹配文件 过滤文件
-i 过滤时忽略大小写
当过滤两个元素 1或2 时 使用egrep egrep=grep-E
grep -E “/<linux” 文件名称 表示linux之前不能有字符
grep -E “linux/>” 文件名称 表示linux之后不能有字符
grep -数字 显示过滤行及过滤行上面或下面几行
grep -n 显示匹配的行所在的行号
grep -A 显示过滤行以及下面的几行
grep -B 显示过滤行以及上面几行
grep -v 反向过滤
grep字符数量匹配规则
^westos 以westos开头的行
westos$ 以westos结尾的行
w....s 中间有4个字符
.....s 前面有5个字符
* 任意字符 在使用时用()来区分单词内字符
? 0到1个字符
{n} n次
{m,n} m到n此
{,n} 0到n次
{m,} 最少m次
(es){2} es最少出现两次
2.sed
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件
对字符的处理
p 显示
sed -n 5p westos 显示第5行
sed -n 1,5p westos 显示第1到第5行
sed -ne “3p;5p” 显示三行和五行
sed -ne 1,5p 显示1到5行
sed -ne 5p,$p 显示5行到最后一行
sed -n‘/^#/p 显示以#开头的行
d 删除
sed '/^#/d' fstab 以#开头的删除
sed '/^#/!d' fstab 除了以#开头的都删除
sed '1,$5d' fstab 删除1到5行
a 添加
sed -e ’$a hello word‘ fstab 在最后一行添加文本hello word \n 换行符
sed '2ahello word' file1 在第二行后面添加文本
sed '/^#/a hello world' file1 在#后面的行添加文本
c 替换
sed ’/hello word/chello linux‘ file1 把含有hello word的行替换成hello linux
sed '5chello world' file1 把第五行替换成hello word
i 插入
sed '5ichello world' file1 在第五行插入hello word
w 把符合的行写到指定文件中
sed '/^hello/w file1' file 把file1 中以hello 开头的行写到file中
r 整合
sed file file1 把file文件整合到file1文件中
sed ’2rfile‘ file1 吧file中的文件整合到file1文件第二行下面
sed ’/hello linux/file‘ file1 把file文件的内容整合到file1文件中hello linux 行下面
sed 字符替换
3.awk 报告生成器
awk -F : 'BEGIN{print "start"}{print $1,$7}END{print “end”}' passwd 从start开始显示 以end结束 挑选出1和7列的信息
awk -F : 'BEGIN{print "start"}{print NF}' passwd NF 显示每行的列数
awk -F : 'BEGIN{print "start"}{print NR}' passwd NR 显示每行的行号
awk -F : '/bash/{print $1}' passwd 打印含有bash的行的第一列
awk -F : '/bash|nologin/{print $1}' passwd 打印含有bash或nologin的行的第一列 单个元素
awk -F : '/^root/||/bash/{print $1}' passwd 这个表示的是以root开头的或者以bash结尾的行显示第一列 多个条件
awk -F : '/^root/&&/bash/{print $1}' passwd 这个表示的是以root开头的并且以bash结尾的行显示第一列 多个条件
awk -F : '!/^root/||/bash/{print $1}' passwd 表示不已root开头或者以bash结尾的行显示i第一列
awk -F : '!/^root/&&/bash/{print $1}' passwd 表示不已root揩油并且以bash结尾的行显示第一列
awk -F : '$1~/^root/{print $1}' passwd 只显示第一行不以root开头的行显示第一列
示例
要求
统计在系统中能su切换的并且用户加目录不在/home下的用户数量
awk -F : '!/home/&&/bash/{print $1}' /etc/passwd