1.find 查找文件
根据时间信息查找数据:
find命令参数
-type 文件类型 f文件 d目录
-size 大小
-path 指定一个路径信息
-prune 进行修剪(删除)
-o 多个条件之间是或者的关系
-a 多个条件之间是并且的关系
-print 将修剪的目录页不要显示
-inum 按inode好查找
-maxdepth 最大层数
find /oldboy -path "/oldboy/oldboy02" -prune -o -type f -name "*.txt" -print
find /oldboy -type f -mtime +30 --- 找出30天以前的数据
find /oldboy -type f -mtime -30 --- 找出最近30天的数据
find /oldboy -type f -mtime 30 --- 找出距离当前第30天的数据
2.grep 过滤
环境准备
[root@oldboy62-0 /]# cat oldgirl
ldboy01
oldboy02
oldgirl03
oldboy01
oldGIRL02
oldgirl03
oldbo04
grep -i 忽略大小写进行过滤
[root@oldboy62-0 /]# grep -i 'oldgirl' oldgirl
oldgirl03
oldGIRL02
oldgirl03
grep -A 2 显示过滤的指定行,以及后几行的信息 -A ==after
[root@oldboy62-0 /]# grep -A2 'oldgirl' oldgirl
oldgirl03
oldboy01
oldGIRL02
oldgirl03
oldbo04
grep -B 2 显示过滤的指定行,以及前几行的信息 -B ==before
[root@oldboy62-0 /]# grep -B2 'oldgirl' oldgirl
ldboy01
oldboy02
oldgirl03
oldboy01
oldGIRL02
oldgirl03
grep -C 2 显示过滤的指定行,以及前后几行信息 -C ==center
[root@oldboy62-0 /]# grep -C2 'oldgirl' oldgirl
ldboy01
oldboy02
oldgirl03
oldboy01
oldGIRL02
oldgirl03
oldbo04
grep -v 取反
[root@oldboy62-0 /]# grep -v 'oldboy' oldgirl
ldboy01
oldgirl03
oldGIRL02
oldgirl03
oldbo04
3.sed增 删 改 查
sed 命令参数
-n 取消默认输出
-r 支持扩展正则
-i 在指定行上面添加内容
-a在指定行下面添加内容
p 输出信息
d 删除文件信息
s 取代-替换
g 将所有匹配到的内容都做替换
c 修改替换指定的整行信息
环境准备
cat >person.txt<<EOF
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
3p
EOF
将第三行信息显示
[root@oldboy62-0 ~]# sed -n 3p person.txt
103,Alex,COO
将有oldboy和有Alex的行进行显示
[root@oldboy62-0 ~]# sed -n '/oldboy/,/Alex/p' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
将第三行信息进行删除
[root@oldboy62-0 ~]# sed '3d' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
104,yy,CFO
105,feixue,CIO
3p
在第3行后面增加新的一行 内容 oldboy62
[root@oldboy62-0 ~]# sed '3aoldboy62' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
oldboy62
104,yy,CFO
105,feixue,CIO
3p
在第5行前面增加新的一行 内容 oldboy62
[root@oldboy62-0 ~]# sed '5ioldboy62' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
oldboy62
105,feixue,CIO
3p
在文件最后一行后面,添加多行信息
[root@oldboy62-0 ~]# sed '$aoldboy62\noldboyedu62' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
3p
oldboy62
oldboyedu62
将123456 信息 显示 为 <123456>
[root@oldboy62-0 ~]# echo 123456|sed -r 's#(.*)#<\1>#g'
<123456>
将123456 信息 显示 为 <123><456>
[root@oldboy62-0 ~]# echo 123456|sed -r 's#([0-9]{3})#<\1>#g'
<123><456>
将123456 信息 显示 为 <1><2><3><4><5><6>
[root@oldboy62-0 ~]# echo 123456|sed -r 's#([0-9])#<\1>#g'
<1><2><3><4><5><6>
3.awk 擅长取行 修改编辑文件
awk参数
-F 指定分隔符
-V 设置变量信息
gsub 替换指定列信息
BEGIN 特殊的运算命令
擅长统计
环境准备
cat > oldboy.txt <<EOF 捐款 1 2 3
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
EOF
显示xiaoyu的姓氏和ID号码
[root@oldboy62-0 ~]# awk '/Xiaoyu/{print $1 $3}' oldboy.txt
Zhang390320151
姓氏是zhang的人,显示他的第二次捐款金额及他的名字
[root@oldboy62-0 ~]# awk '/Zhang/{print $2 $4}' oldboy.txt
Dandan:250:100:175
Xiaoyu:155:90:201
显示所有以41开头的ID号码的人的全名和ID号码
[root@oldboy62-0 ~]# awk '$3~/^41/{print $1 $2 $3}' oldboy.txt
ZhangDandan41117397
LiuBingbing41117483
显示所有ID号码最后一位数字是1或5的人的全名
[root@oldboy62-0 ~]# awk '/5$|1$/{priboy.txt
ZhangDandan
ZhangXiaoyu
WuWaiwai
LiuBingbing
WangXiaoai
LaoNanhai
显示文件中第二行,第三列的信息
[root@oldboy62-0 ~]# awk 'NR==2{print $3}' oldboy.txt
390320151
在系统中用于计算数值
[root@oldboy62-0 ~]# awk "BEGIN{print 3+4}" oldboy.txt
7
统计/etc/passwd文件中最后一列有/sbin/nologin的出现了多少次
[root@oldboy62-0 ~]# awk -F ":" '$NF~/nologin$/{i++}END{print i}' /etc/passwd
18
把/etc/passwd第三列.第四列的数值相加
[root@oldboy62-0 ~]# awk -F":" '{print $3,$4}' /etc/passwd|awk '{i=i+$1;x=x+$2}END{print i+x}'
73030
网友评论