文本处理工具
1. grep
grep
grep -E = egrep
grep格式
grep +匹配调节 +处理文件
grep root passwd 过滤root关键字
grep ^root passwd 以root开头
grep root$ passwd 以root结尾
grep -i root passwd 忽略大小写
grep -E "root\>" passwd root后不能有字符
grep -E "/<root" passwd root前不能有字符
grep -n 处理文件 显示匹配的行所在的行号
grep -数字 westos passwd 显示westos所在行上下行数
grep -A westos passwd 显示westos行以及下面几行
grep -b westos passwd 显示westos行以及上面几行
grep字符数量匹配规则
^westos 以westos开头
westos$ 以westos结尾
w....s 中间任意4个字符
.....s 前面任意五个字符
* 字符出现0到任意次
+ 字符出现1到任意次
? 字符出现0到1次
{n} 出现n次
{m,n} m到n次
{,n} 0-n次
{m,} 最少m次
(yueyue){2} 字符出现2次
测试grep命令
脚本练习
1.请显示系统中能被su命令切换的用户名称
# vim username.sh
# sh username.sh
2. sed
命令格式
sed 参数 命令 处理对象
sed 参数 处理对象 处理规则
对字符的处理
p显示
# sed -n 5p westos 显示第五行
# sed -ne "3p;5p" westos 显示第五行个第三行
# sed -n 3,5p westos 显示3-5行
# sed -ne '5,$p' westos 显示5到最后一行
# sed -n '/#/p' fstab 显示以#号结尾的行
d删除
# sed 5d westos 删除第五行
# sed '/^UUID/!d' fstab 删除除去UUID开头的
a 添加
# sed -e /^h/'a test' westos 在h开头的行下面加test
# sed '$a hello world' westos 在结尾加hello world
c 替换
# sed -e /^hllo/'c linux ' westos 将hllo开头的替换为linux
w 保存
# sed -e '/bash$/w linux' passwd 结尾是bash的保存在文件linux中
i 插入
# sed -e '/^root/i yueyue' linux
r 文件整合
# sed '5r linux' westos 将linux文件整合在第五行
脚本练习
Apache_port.sh
此脚本后介入数字
http的端口就改为此数字
假设selinux为关闭状态
# vim Apache_port.sh
# sh Apache_port.sh 1211
# netstat -antlupe | grep httpd
3.awk
awk -f 分隔符 BEGIN{ } { } END{ } filename
/bash$/ 条件1
/条件1|条件2/ 条件1或者条件2
/条件1/||/条件2/ 或者
/条件1/&&/条件2/或者
练习:
统计在系统中能su切换的并且用户家目录不在/home下的用户
# awk -F : '$6!~/home/&&/bash$|csh$|sh$|tcsh$/{print}' /etc/passwd