1.grep
作用: 模糊过滤文件的内容
1.-v 取反
*****
2.-r 递归过滤 *****
3.-i 不区分大小写
4.-w 精确匹配
5.-o 匹配过程
6.-E 支持扩展正则 等同于egrep
7.-A 显示过滤到内容的后 n行
8.-B 显示过滤到内容的前 n行
9.-C 显示过滤到内容的前后各n行
10.-n 显示到过滤内容的行号
11.-c 统计某个单词出现的次数-r 案例: 递归过滤目录及目录下下所有文件的内容
配置环境:
[root@db01 ~]
[root@db01 ~]
[root@db01 ~]
[root@db01 oldboy]
total 4-rw-r--r-- 1 root root 14 Mar 18 08:48 code.txt
[root@db01 oldboy]
[root@db01 oldboy]
[root@db01 oldboy]
total 4-rw-r--r-- 1 root root 14 Mar 18 08:48 code.txt
drwxr-xr-x 2 root root 19 Mar 18 08:49 test
过滤出当前目录及以下所有文件中包含www.baidu.com的文件
[root@db01 oldboy]
www.baidu.com
[root@db01 oldboy]
www.baidu.com
[root@db01 oldboy]
code.txt:www.baidu.com
grep: test: Is a directory
[root@db01 oldboy]
code.txt:www.baidu.com
test/1.txt:www.baidu.com
或者:
[root@db01 oldboy]
./code.txt
./test/1.txt
[root@db01 oldboy]
./test/1.txt:www.xiaoze.com
统计日志中出现Failed的次数
[root@db01 ~]
3
2.sed
案例1.指定行查找
语法格式: sed -n '3p' 文件
cat 文件|sed -n '3p'
[root@db01 ~]
[root@db01 ~]
显示文件的最后一行:
[root@db01 ~]
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
过滤区间范围: sed -n '2,4p' 文件
过滤文件的2-4行
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
显示文件的第2行到最后一行
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
处理屏幕上显示的内容
[root@db01 ~]
inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255
案例2.模糊过滤文件内容
语法结构: sed -n '/过滤的内容/p' file
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
使用正则:
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
过滤以a或b或c开头的行
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
过滤以什么结尾的行
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
过滤区间范围:
sed -n '//,//p' 文件
sed -n '2,4p' 文件
过滤字符串区间范围:
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
案例: 过滤时间 统计上午8点到中午12点中间数据
[root@linuxnc ~]
注意匹配方式:
[root@db01 ~]
aaa
bbb
ccc
bbb
uuu
ddd
eee
fff
ddd
xxx
[root@db01 ~]
bbb
ccc
bbb
uuu
ddd
案例3.sed之删除
指定行删除:
语法格式: sed '3d' file
修改源文件 sed -i '3d' file
案例1.删除文件的第3行
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
案例2.删除2到4行
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
案例3.删除2到最后一行
[root@db01 ~]
模糊过滤内容,然后删除
语法结构: sed '/字符串/d' file
删除包含root的行
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
删除b开头的行
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin-r 支持扩展正则 |或者的意思
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
删除bin开头或者lp开头的行
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
匹配区间范围进行删除:
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
案例4.sed 替换
语法结构:
sed 's#将谁#替换成谁#g' 文件
sed 's@@@g' 文件
sed 's///g' 文件
案例: 只替换每行的第一个单词 root为oldboy
[root@db01 ~]
oldboy:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
案例: 替换所有的root为oldboy
[root@db01 ~]
oldboy:x:0:0:oldboy:/oldboy:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
oldboy:x:0:0:oldboy:/oldboy:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
案例: 将root替换成空
[root@db01 ~]
:x:0:0::/:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
:x:0:0::/:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
案例: 删除所有的数字
[root@db01 ~]
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
root:x:::root:/root:/bin/bash
lp:x:::lp:/var/spool/lpd:/sbin/nologin
案例: 删除所有的字符串
[root@db01 ~]
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://
::0:0::/://
::4:7::///://
[root@db01 ~]
:::::/://
:::::/://
:::::/://
::::://://
:::::/://
:::::///://
案例: 统计passwd中每个单词出现的次数 top10
将特殊符号替换成空
[root@db01 ~]
root
root root bin bash
bin
daemon
adm
root
lp
bin bin sbin nologin
daemon sbin sbin nologin
adm var adm sbin nologin
root root bin bash
lp var spool lpd sbin nologin
[root@db01 ~]
6 root
5 sbin
5 bin
4 nologin
3 adm
2 var
2 lp
2 daemon
2 bash
1 spool
边界符:
[root@db01 ~]
或者:
[root@db01 ~]
root:x:0:0:root:/root:/oldboy/bash
oldboy:x:1:1:oldboy:/oldboy:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
root:x:0:0:root:/root:/oldboy/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
注意: 语法冲突需要使用撬棍\ 或者换个语法
[root@db01 ~]
[root@db01 ~]
或者
[root@db01 ~]
动作:
sed -n '3p' 文件
sed 's###g' 文件
模式+动作
模式: 找谁,如何找
sed -n '3p'
演变: 将p输出动作 修改为替换动作
[root@db01 ~]
案例: 将2到4行的nologin替换成oldboy
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/oldboy
daemon:x:2:2:daemon:/sbin:/sbin/oldboy
adm:x:3:4:adm:/var/adm:/sbin/oldboy
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
oldboy:x:3:4:oldboy:/var/oldboy:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
区间范围:
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
::3:4:://://
::0:0::/://
::4:7::///://
案例5.sed 追加 插入 替换 后向引用
1. i 插入 在第3行写入aaa
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
aaa
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
2. a追加 在第3行的下一行 在第4行写入aaa
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
aaa
adm:x:3:4:adm:/var/adm:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
3. c替换 替换整行内容
[root@db01 ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
aaa
adm:x:3:4:adm:/var/adm:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
替换第7行的内容关闭selinux
[root@db01 ~]
4. w 保存 将找到的行保存到新的文件中
[root@db01 ~]
保存2到4行的内容到new.txt
[root@db01 ~]
[root@db01 ~]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@db01 ~]
sed后向引用:
语法结构: sed s
[root@db01 ~]
oldboy
[root@db01 ~]
[root@db01 ~]
db
[root@db01 ~]
oy
[root@db01 ~]
ol
[root@db01 ~]
oldboy test
[root@db01 ~]
oldboy
案例: 取出IP地址
[root@db01 ~]
10.0.0.200
第二种用户: 命令拼接后交给bash执行
[root@db01 ~]
touch 1.txt
touch 2.txt
touch 3.txt
touch 4.txt
touch 5.txt
[root@db01 ~]
[root@db01 ~]
total 20-rw-r--r-- 1 root root 18 Mar 18 11:46 1.txt-rw-r--r-- 1 root root 0 Mar 18 11:46 2.txt-rw-r--r-- 1 root root 0 Mar 18 11:46 3.txt-rw-r--r-- 1 root root 0 Mar 18 11:46 4.txt-rw-r--r-- 1 root root 0 Mar 18 11:46 5.txt
[root@db01 ~]
test1 test2 test3
[root@db01 ~]
test1
test2
test3
[root@db01 ~]
test1
test2
test3
[root@db01 ~]
useradd test1
useradd test2
useradd test3
[root@db01 ~]
sed小结:
sed -i 修改源文件
sed -r 支持扩展正则
sed -n 取消默认输出
1.指定行查找
sed -n '3p' file
sed -n '3,6p' file
2.模糊过滤
sed -n '/过滤的内容/p' file
sed -n '//,//p' file
正则:
sed -n '/^a/p' file
sed -n '/n$/p' file
sed -rn '/^a|h$/' file
3.删除
sed '3d' file
sed '3,6d' file
模糊过滤后删除
sed '/root/d' file
sed '//,//d' file
4.替换
sed 's/将谁/替换成谁/g' file s是单字符替换
sed 's###g'
注意: 如果涉及到变量需要使用双引号
模式+动作
sed '3s#bin##g' file
sed '3,10s###g' file
sed '/root/s#bin#oldboy#g' file
其他参数:
sed '3a aaa'
sed '3i aaa'
sed '3c aaa' c是change,整行替换
sed '3w test.txt'
sed -r 's#()#\1#g' file
作业: 练习sed 笔记
复习-->
系统重要配置文件
系统优化
文件属性:
1.inode block
2.文件类型 zero null
3.软件安装 yum rpm
4.find查找文件
5.tar zip打包压缩
6.软硬链接
7.grep 过滤内容