day015-Linux基础-三剑客awk

5次阅读
没有评论

2026年3月26

知识点回顾

三剑客sed
cat >>1.txt<<EOF
aaaa
bbbb
cccc
dddd
EOF
1.sed取行
sed '2p' 1.txt
sed -n '2p' 1.txt 取消默认输出
sed -n '1,2p' 1.txt 区间
sed -n '2p;3p' 1.txt
2.sed模糊过滤
sed -n '/a/p' 1.txt
sed -n '/a,d/p' 1.txt
sed -n '/[abc]/p' 1.txt
sed -rn '/a|b/p' 1.txt
3.sed增加
sed '1i hehe' 1.txt
sed '2a hehe' 1.txt
sed '3c hehe' 1.txt
sed '4w file' file 
4.sed删除
sed '3d' 1.txt
sed '1,3d' 1.txt
sed '2d;4d;' 1.txt
sed '/aaa/d' 1.txt
5.sed替换
sed 's/aaa/hehe/g' 1.txt
sed '2s/aaa/hehe/g' 1.txt
sed '2,3s/aaa/hehhe/g' 1.txt
sed 's/[abc]/hehe/g' 1.txt
01.awk
awk作用:a w k 三个人开发的 三剑客大哥
作用:
1.取行
2.取列
3.模糊过滤
4.支持字符串、数值比对
5.支持正则表达式、判断
6.编程语言、for while if 数组
7.格式化输出
0.补充:sed后向引用(了解)
[root@oldboy ~]# echo shell mysql|sed -r 's#(shell) (mysql)#\2#g'
mysql
[root@oldboy ~]# echo shell mysql|sed -r 's#(.*) (.*)#\1#g'
shell
[root@oldboy ~]# echo shell mysql|sed -r 's#(.*) (.*)#\2#g'
mysql
[root@oldboy ~]# echo shell mysql|sed -r 's#(.*) (.*)#\2 \1#g'
mysql shell
[root@oldboy ~]# ip a|sed -n '/ens33$/p'|sed -r 's#^.*et (.*) brd.*$#\1#g'
10.0.0.200/24
[root@oldboy ~]# ip a|sed -n '/ens33$/p'
    inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute ens33

[root@oldboy ~]# echo -e "1.txt\n2.txt"|sed -r 's#(.*)#touch \1#g'|bash
[root@oldboy ~]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 26 16:01 1.txt
-rw-r--r-- 1 root root 0 Mar 26 16:01 2.txt

[root@oldboy ~]# echo touch a.txt|bash
[root@oldboy ~]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 26 16:01 1.txt
-rw-r--r-- 1 root root 0 Mar 26 16:01 2.txt
-rw-r--r-- 1 root root 0 Mar 26 16:02 a.txt
#注意:|bash将屏幕上输出的字符串作为命令执行
-----------------------------------
find 支持取反
[root@oldboy ~]# find oldboy/ ! -type f
oldboy/
oldboy/test

sed 支持取反
[root@oldboy ~]# sed '3!d' 1.txt 
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
1.awk 取行
语法结构: awk 'NR==3' file #取出文件的第3行
          sed -n '3p' file
          awk 'NR==3{print}' file

#NR是awk的内置变量、存放着行号
== #等于
>  #大于
>= #大于等于
<  #小于
<= #小于等于
!= #不等于
&& #并且
|| #或者
案例1:取出文件的第3行
[root@oldboy ~]# cat 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboy ~]# awk 'NR==3' 1.txt 
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@oldboy ~]# awk 'NR==3{print}' 1.txt 
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
案例2:输出大于5的行
[root@oldboy ~]# awk 'NR>5' 1.txt 
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
案例3:输出小于5的行
[root@oldboy ~]# awk 'NR<5' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
案例4:输出小于等于3的行
[root@oldboy ~]# awk "NR<=3" 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
案例5:输出第3行或者第5行
[root@oldboy ~]# awk 'NR==3||NR==5' 1.txt 
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
案例6:输出大于5并且小于9的行
[root@oldboy ~]# awk 'NR>5&&NR<9' 1.txt
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
2.awk取列
语法结构:
        awk '{print $n}' file #awk的动作都是在{}中
        awk '找谁{干啥}' --默认 awk 'NR==3{pirnt}'
        逗号在awk中内置变量、里面存放的是空格
        取列默认按照空格或者tab来进行分割
        NF在awk中存放着最后一列的列号
        $0 #表示每行的内容
        $1 #表示第一列
        $2 #表示第二列

grep -E egrep
sed -r
awk (注意:awk默认支持扩展正则)
案例1:输出文件的第一列
[root@oldboy ~]# awk '{print $1}' 2.txt 
zs
ls
lw
gd
gs

[root@oldboy ~]# cat 2.txt |awk '{print $1}'
zs
ls
lw
gd
gs
案例2:输出df结果的第二列

“`bash\
[root@oldboy ~]# df -h |awk ‘{print $2}’
Size
963M
979M
979M
979M
48G
979M
195M
196M

###### 案例3:对Size进行取反

```bash
[root@oldboy ~]# df -h|awk '{print $2}'|grep -v Size
963M
979M
979M
979M
48G
979M
195M
196M
案例4:先输出第2列、后面是第1列
[root@oldboy ~]# cat 2.txt |awk '{print $2,$1}'
00 zs
00 ls
99 lw
88 gd
2 gs
案例5:输出文件的最后一列
[root@oldboy ~]# cat 2.txt 
zs 00 ll
ls 00 ll
lw 99 ww
gd 88 dd
gs 2 ss
[root@oldboy ~]# cat 2.txt |awk '{print $3}'
ll
ll
ww
dd
ss

[root@oldboy ~]# cat 2.txt |awk '{print $5}'


77
案例6:输出每行内容的最后一列内容
[root@oldboy ~]# cat 2.txt 
zs  10  20
ls  8   99  55
lw  00  88  66 77
gd  11  23  
gs  9 
[root@oldboy ~]# cat 2.txt |awk '{print $NF}'
20
55
77
23
9
#NF输出每行最后的列号
[root@oldboy ~]# cat 2.txt |awk '{print NF}'
3
4
5
3
2
案例7:输出df结果的最后一列
[root@oldboy ~]# df -h |awk '{print $NF}'
on
/dev
/dev/shm
/run
/sys/fs/cgroup
/
/tmp
/boot
/run/user/0
案例8:输出倒数第二列
[root@oldboy ~]# df -h |awk '{print $(NF-1)}'
Mounted
0%
0%
3%
0%
32%
1%
72%
0%
案例9:指定分隔符:取出第一列
awk默认按照空格或者tab键作为分隔符,可以使用-F修改默认分隔符
[root@oldboy ~]# cat aa.txt 
1 root:x:0:0:root:/root:/bin/bash
[root@oldboy ~]# awk -F: '{print $1}' aa.txt 
1 root
案例10:可以指定任意的字符串为分隔符
[root@oldboy ~]# echo oldboy
oldboy
[root@oldboy ~]# echo oldboy|awk -Fb '{print $1}'
old
[root@oldboy ~]# echo oldboy|awk -Fb '{print $2}'
oy
[root@oldboy ~]# echo oldboy|awk -Fdb '{print $1}'
ol
[root@oldboy ~]# echo oldboy|awk -Fdb '{print $2}'
oy
案例11:取出文件的第6列
[root@oldboy ~]# cat aa.txt 
1 root:x:0:0:root:/oldboy:/root:/bin/bash
[root@oldboy ~]# awk -F: '{print $6}' aa.txt 
/oldboy
#不想要/ 只要oldboy字符串
[root@oldboy ~]# awk -F: '{print $6}' aa.txt |awk -F/ '{print $2}'
oldboy
或者
[root@oldboy ~]# cat aa.txt
1 root:x:0:0:root:/oldboy:/root:/bin/bash
[root@oldboy ~]# awk -F: '{print $6}' aa.txt 
/oldboy
[root@oldboy ~]# awk -F: '{print $6}' aa.txt |awk -F/ '{print $2}'
oldboy
---------------------
[root@oldboy ~]# awk -F:/ '{print $1}' aa.txt 
1 root:x:0:0:root
[root@oldboy ~]# awk -F:/ '{print $2}' aa.txt 
oldboy
[root@oldboy ~]# awk -F:/ '{print $3}' aa.txt 
root
案例12:注意连续的分隔符的取列
[root@oldboy ~]# awk -F: '{print $2}' bb..txt 

[root@oldboy ~]# awk -F: '{print $3}' bb..txt 
shell
[root@oldboy ~]# awk -F: '{print $4}' bb..txt 
test
--------------------
[root@oldboy ~]# cat bb..txt 
oldboy:/shell:test
[root@oldboy ~]# cat bb..txt |awk -F ":|/" '{print $1}'
oldboy
[root@oldboy ~]# cat bb..txt |awk -F ":|/" '{print $2}'

[root@oldboy ~]# cat bb..txt |awk -F ":|/" '{print $3}'
shell
[root@oldboy ~]# cat bb..txt |awk -F ":|/" '{print $4}'
test
-----------
或者使用[]
[root@oldboy ~]# cat bb..txt |awk -F "[:/]" '{print $4}'
test
[root@oldboy ~]# cat bb..txt |awk -F "[:/]" '{print $2}'

---------------------
[root@oldboy ~]# cat bb..txt 
oldboy:/shell:test
[root@oldboy ~]# cat bb..txt |awk -F "[:/]+" '{print $2}'
shell
理解
[root@oldboy ~]# cat bb..txt |grep -E '[:/]+'
oldboy:/shell:test
[root@oldboy ~]# cat bb..txt |grep -E '[:/]+' -o
:/
:
理解任意或者
[root@oldboy ~]# echo --++%.--+shell-+-%mysql---test|awk -F "[-+%.]" '{print $14}'
mysql
[root@oldboy ~]# echo --++%.--+shell-+-%mysql---test|awk -F "[-+%.]" '{print $10}'
shell
[root@oldboy ~]# echo --++%.--+shell-+-%mysql---test|awk -F "[-+%.]" '{print $17}'
test
------------------
[root@oldboy ~]# echo --++%.--+shell-+-%mysql---test|awk -F "[-+%.]+" '{print $2}'
shell
[root@oldboy ~]# echo --++%.--+shell-+-%mysql---test|awk -F "[-+%.]+" '{print $3}'
mysql
[root@oldboy ~]# echo --++%.--+shell-+-%mysql---test|awk -F "[-+%.]+" '{print $4}'
test

笔试题:
统计一下每个域名出现的次数按照从大到小输出
[root@oldboy ~]# cat url.txt 
http://www.baidu.com/index.html
http://www.sina.com/index.html
http://www.baidu.com/1.html
http://www.weibo.com/index.php
http://www.sina.com/a.html
http://www.baidu.com/b.html
-----------------
[root@oldboy ~]# cat url.txt |awk -F "[:/]+" '{print $2}' |sort |uniq -c|sort -rn
      3 www.baidu.com
      2 www.sina.com
      1 www.weibo.com

[root@oldboy ~]# cat url.txt |awk -F/ '{print $3}' |sort |uniq -c|sort -rn
      3 www.baidu.com
      2 www.sina.com
      1 www.weibo.com

[root@oldboy ~]# cat url.txt |awk -F/+ '{print $2}' |sort |uniq -c|sort -rn
      3 www.baidu.com
      2 www.sina.com
      1 www.weibo.com
3.awk模糊过滤
语法结构:
        awk '/字符串/' file
        grep '字符串' file
        sed -n '/字符串/p' file
案例1:取出包含root的行
[root@oldboy ~]# awk '/root/' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
10 operator:x:11:0:operator:/root:/sbin/nologin
案例2:取出包含root或者adm的行
[root@oldboy ~]# awk '/root|adm/' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
案例3:取出以4开头的行
[root@oldboy ~]# awk '/^4/' 1.txt 
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
案例4:取出以n结尾的行
[root@oldboy ~]# awk '/n$/' 1.txt 
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
案例5:取出以n或者h结尾的行
[root@oldboy ~]# awk '/n$|h$/' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
-------------
[root@oldboy ~]# awk '/[nh]$/' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
案例6:输出包含数字的行
[root@oldboy ~]# awk '/[0-9]/' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
案例7:取出adm到shut之间的行
[root@oldboy ~]# awk '/adm/,/shut/' 1.txt 
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
案例8:取出文件中第一列等于root的行
#字符串比对
[root@oldboy ~]# awk -F: '$1=="root"' 2.txt 
root:x:0:0:root:/root:/bin/bash
案例9:取出最后一列等于shutdownd
[root@oldboy ~]# cat 2.txt |awk -F '[:/]+' '$NF=="shutdown"'
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
4.数字比对
语法结构:   awk '$>1' file
比较符合:
== #等于
!= #不等于
>  #大于
>= #大于等于
<  #小于
<= #小于等于
&& #并且
|| #或者
案例1:输出第3列等于0的行
[root@oldboy ~]# awk -F: '$3==0' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
案例2:输出第3列大于5的行
[root@oldboy ~]# awk -F: '$3>5' 1.txt 
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
案例3:输出第3列小于等于3的行
[root@oldboy ~]# awk -F: '$3<=3' 1.txt 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
案例4:输出第三列大于3并且小于6的行
[root@oldboy ~]# awk -F: '$3>3&&$3<6' 1.txt 
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
案例5:输出第三列等于5或者大于8的行
[root@oldboy ~]# awk -F: '$3==5||$3>8' 1.txt 
6 sync:x:5:0:sync:/sbin:/bin/sync
10 operator:x:11:0:operator:/root:/sbin/nologin
案例6:统计成绩小于60的有多少同学
[root@oldboy ~]# awk '$3<60' count.txt
案例7:统计成绩大于等于60并且小于等于90的同学多少
[root@oldboy ~]# awk '$3>=60&&$3<=90' count.txt|wc -l
31
案例8:统计成绩大于90的同学有多少
[root@oldboy ~]# awk '$3>=60&&$3<=90' count.txt|wc -l
31
[root@oldboy ~]# awk '$3>90' count.txt|wc -l
35
案例9:输出大于90分的同学的名字
awk '找谁{干啥}'
[root@oldboy ~]# awk '$3>90{print $1}' count.txt 
潘桐
李国庆
郭伯远
庞明双
刘璐
5.模式+动作
语法结构:awk '找谁{干啥}' file
案例1:输出文件的第3行的第1列 冒号分隔
[root@oldboy ~]# awk -F: 'NR==3{print $1}' 1.txt 
3 daemon
案例2:输出文件的第5行的第1和最后一列
[root@oldboy ~]# awk -F: 'NR==5{print $1,$NF}' 1.txt 
5 lp /sbin/nologin
案例3:输出df结果的以/结尾行的第一列和倒数第二列
[root@oldboy ~]# df -h|awk '/\/$/{print $1,$(NF-1)}'
/dev/sda3 32%

#awk取行取列使用率最高
[root@oldboy ~]# ip a|awk '/ens33$/{print $2}'
10.0.0.200/24
取出IP地址
[root@oldboy ~]# ip a|awk -F "[ /]+" '/ens33$/{print $3}'
10.0.0.200

[root@oldboy ~]# ifconfig |awk 'NR==2{print $2}'
10.0.0.200

[root@oldboy ~]# mkdir `hostname -I|awk '{print $1}'`_`hostname`
[root@oldboy ~]# ll
total 24
drwxr-xr-x 2 root root    6 Mar 26 18:30 10.0.0.200_oldboy


其他了解:
[root@oldboy ~]# awk 'BEGIN{print "hehe"}'
hehe
[root@oldboy ~]# awk 'BEGIN{print 10+10}'
20
[root@oldboy ~]# awk 'BEGIN{print 10*10}'
100
[root@oldboy ~]# awk 'BEGIN{print 10-10}'
0
[root@oldboy ~]# awk 'BEGIN{print 10/10}'
1
[root@oldboy ~]# awk 'BEGIN{print 10%10}'
0
[root@oldboy ~]# awk 'BEGIN{print 10^10}'
10000000000

[root@oldboy ~]# awk -F: 'BEGIN{print "开始..."}{print $1}END{print "结束"}' 1.txt 
开始...
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync
7 shutdown
8 halt
9 mail
10 operator
结束
三剑客面试题
1:过滤出文件中包含root的行
grep 'root' file
2:企业案例:被攻击了
[root@oldboy oldboy]# tree
.
├── 1.html
├── a.html
└── www
    └── index.html

1 directory, 3 files
1)#取出哪些文件被篡改了www.oldboy.com--->www.cjj.com
方法1:
[root@oldboy ~]# grep -r 'www.cjj.com' oldboy/*
oldboy/a.html:www.cjj.com
oldboy/www/index.html:www.cjj.com
方法2:
[root@oldboy ~]# find oldboy/ -type f|xargs grep 'www.cjj.com'
oldboy/a.html:www.cjj.com
oldboy/www/index.html:www.cjj.com
-----------------------
#如何快速恢复?如何将文件中被篡改的www.cjj.com批量替换成www.oldboy.coom?
用学过的内容解决
第一步:查找出被篡改的文件
grep -r 'www.cjj.com' oldboy/*
[root@oldboy ~]# grep -r 'www.cjj.com' oldboy/*
oldboy/a.html:www.cjj.com
oldboy/www/index.html:www.cjj.com
第二步:取出文件名,sed -i只能接收文件名所以需要先把文件名取出来用awk
grep -r 'www.cjj.com' oldboy/*|awk -F: '{print $1}'
[root@oldboy ~]# grep -r 'www.cjj.com' oldboy/*|awk -F: '{print $1}'
oldboy/a.html
oldboy/www/index.html
最后一步:用sed -i替换
grep -r 'www.cjj.com' oldboy/*|awk -F: '{print $1}'|xargs sed -i 's#www.cjj.com#www.oldboy.com#g'
修改成功
[root@oldboy ~]# grep -r 'www.oldboy.com' oldboy/*
oldboy/1.html:www.oldboy.com
oldboy/a.html:www.oldboy.com
oldboy/www/index.html:www.oldboy.com
3:取出文件的第5行第3列
awk 'NR==5{print $3}'
4:要将文件中所有的root替换成oldboy
sed 's#root#oldboy#g'
5:想看过滤到内容的上和下面的内容
面试----
grep
     -An    #输出过滤到内容的行向下n行
     -Bn    #输出过滤到内容的行向上n行
     -Cn    #输出过滤到内容的行上下各n行
重点小结
grep 
     -v #取反
     -r #递归过滤
     -E #支持扩展正则
     -w #精确匹配
     --------------
     面试
     -An    #输出过滤到内容的行向下n行
     -Bn    #输出过滤到内容的行向上n行
     -Cn    #输出过滤到内容的行上下各n行
     -----------------------
     -o #查看匹配过程
     -i #忽略大小写
     -c #统计单词数量
     -n #显示过滤到内容的行号
案例1:精确匹配
[root@oldboy ~]# cat o1.txt 
122
2
100
3
4
5
6
7
1
8
9
10
[root@oldboy ~]# grep '1' o1.txt 
122
100
1
10
[root@oldboy ~]# grep '1' o1.txt |wc -l
4
[root@oldboy ~]# grep -w '1' o1.txt 
1
-----------------
[root@oldboy ~]# grep 'test' od.txt 
test
testaaaa
test123
dsjdtest
[root@oldboy ~]# grep -w 'test' od.txt 
test
[root@oldboy ~]# grep '\btest\b' od.txt 
test
案例2:过滤内容的行向下多看2行
[root@oldboy ~]# grep 'adm' 1.txt 
4 adm:x:sbn3:4:adm:/var/adm:/sbin/nologin
[root@oldboy ~]# grep -A2 'adm' 1.txt 
4 adm:x:sbn3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
案例3:过滤到内容的行向上多看2行
[root@oldboy ~]# grep -B2 'adm' 1.txt 
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:sbn3:4:adm:/var/adm:/sbin/nologin
案例4:过滤到内容的行向上下各看2行
[root@oldboy ~]# grep -C2 'adm' 1.txt 
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:sbn3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
正文完
 0
评论(没有评论)