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次
命令格式
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' westos 显示以#开头的行
d 删除sed 5d westos 删除第五行
sed '/^#/d' westos 把#开头的行删除
sed '/^UUID/!d' westos 除了UUID以外的行都删除
sed -e '5,$d' westos
a 添加
sed -e '$ahello westos' westos
sed -e '$a hello\westos' westos
sed -e '/^#/ahello westos' westos
c 替换sed -e '/^#/c hello world' westos
sed '5chello world' westos
w 把符合的行写到指定文件sed '/^UUID/w westosfile' westos 把westos中的UUID开头的行写入westosfile中
i 插入sed '5ihello westos' westos 第五行的上面插入hello westos
r 整合文件sed '5r haha' westos
练习:
写apache.sh 运行此脚本可以修改httpd的端口为1111
sed字符替换sed '$/:/###/g' westos
sed '$/:/###/ ' westos
sed '1,5s/:/##/g' westos
sed '1s/:/##/g' westos
sed '1s/:/##/g;5s/:/##/g' westos
sed '/daemon/,/lp/s/:/##/g' westos
sed 's/\//##/g' westos
sed 's@/@##@g' westos @=/
sed 's@/@##@g' -i westos 把sed处理的内容保存到westos
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
$0 所有的列
$1 第一列
$2 第二列
$2 第三列
/etc/passwd文件的第六列没有home关键词并且以bash结尾的行
练习:
在系统中统计能被用户使用的并且家目录不在/home中的用户个数