grep 匹配文件 过滤文件
-i 过滤时忽略大小写
当过滤两个元素 1或2 时 使用egrep egrep=grep-E
grep -E “/ 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最少出现两次 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 字符替换 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



