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 -数字 ##显示过滤行以及上面几行和下面几行
grep -n ##显示匹配的行所在行号
grep -A ##显示过滤行以及下面几行
grep -B ##显示过滤行以及上面几行
grep -v ##反向过滤
grep字符数量匹配规则
^westos ##以westos开有 westos$ ##以westos结尾 w…s ##w开头s结尾中间4个任意字符 …s ##s结尾前面5个任意字符 * ##字符出现0到人一次 ? ##0到1此 + ##1到任意此 {n} ##n此 {m,n} ##m到n次 {0,n} ##0-n次 {,n} ##0-n次 {m,} ##最少m次 (lee){2} ##lee字符串出现2次
练习脚本: 请显示系统中能被su命令切换的用户名称
2.sed
命令格式:
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件
对字符的处理
p ##显示
sed -n 5p westos ##显示第五行
sed -n 3,5p westos ##显示3到5行
sed -ne "3p;5p westos ##显示3和5行
sed -ne 1,5p westos ##1-5行
sed -ne '5,$p' westos ##5到最后以行
sed -n '/^#/p' fstab ##显示以#开头的行
d ##删除
sed 5d westos ##删除第五行
sed '/^#/d' fstab ##把#开头的行删除
sed '/^UUID/!d' fstab ##除了UUID以外的行都删除
sed -e '5,$d' westos
a ##添加
sed -e '$a hello world' fstab
sed -e '$a hello\nworld' fstab
sed -e '/^#/a hello world' fstab
c ##替换
sed -e '/^#/c hello world' fstab
sed '5chello world' westos w ##把符合的行写到指定文件中
sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中
i ##插入
sed '5ihello westos' westos
r ##整合文件
sed '5r haha' westos
sed 字符替换
sed 's/:/###/g' westos
sed 's/:/###/' westos
sed 's/:/###/g' westos
sed '1,5s/:/###/g' westos
sed '1s/:/###/g' westos
sed '1s/:/###/g;5s/:/###/g' westos
sed '/lp/,/shutdown/s/:/###/g' westos
sed 's/\//####/g' westos
sed 's@/@####@g' westos
sed 's@/@####@g' -i westos 把sed处理的内容保存到westos文件中
练习及脚本 Apache_port.sh 此脚本后介入数字 http的端口就改为此数字 假设selinux为关闭状态
3.awk
awk -F 分隔符 BEGIN{}{}END{} FILENAME NR #行数 NF #列数 FILENAME #文件名称本身 westos #westos变量值 “westos” #westos字符串 /bash$/ #条件 /条件1|条件2/ #条件1或者条件2 /条件1/||/条件2/ #条件1或者条件2 /条件1/&&/条件2/ #条件1并且条件2 $0 #所有的列 $1 #第一列 $2 #第二列 $3 #第三列
#/etc/passwd文件的第六列没有home关键字并且以bash结尾的行 awk -F : ‘KaTeX parse error: Expected 'EOF', got '&' at position 10: 6!~/home/&̲&/bash/{print}’ /etc/passwd
课后练习: 统计杂在系统中能su切换的并且用户加目录不在/home下的用户数量