四剑客命令集合

2019-06-12  本文已影响0人  linux_龍

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
上一篇 下一篇

猜你喜欢

热点阅读