一剑客 grep
grep:Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
# 格式
grep [OPTION]... PATTERN [FILE]...
# 选项
--color=auto:对匹配到的文本着色显示
-m num:匹配num次后停止
-v:显示不被pattern匹配到的行,即取反
-i:忽略字符大小写
-n:显示匹配的行号
-c:统计匹配的行数
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-A num:after, 打印匹配行的后num行
-B num:before,打印匹配行的前num行
-C num:context, 打印匹配行前后各num行
-e:实现多个选项间的逻辑or关系
-w:匹配整个单词
-E:使用ERE,相当于egrep
-F:不支持正则表达式,相当于fgrep
-P:支持Perl格式的正则表达式
-f file:根据模式文件处理
-r:递归目录,但不处理软链接
-R:递归目录,但处理软链接
范例
1. 取两个文件的相同行
[root@linux ~]# cat test1.txt
a
b
1
c
[root@linux ~]# cat test2.txt
b
e
f
c
1
2
[root@linux ~]# grep -f test1.txt test2.txt
b
c
1
[root@linux ~]# cat test1.txt test2.txt | sort | uniq -d
1
b
c
2. 分区利用率最大值
[root@linux ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 966744 0 966744 0% /dev
tmpfs 996036 0 996036 0% /dev/shm
tmpfs 996036 9356 986680 1% /run
tmpfs 996036 0 996036 0% /sys/fs/cgroup
/dev/mapper/rl-root 73364480 6131808 67232672 9% /
/dev/mapper/rl-home 133071376 960932 132110444 1% /home
/dev/nvme0n1p1 1038336 298156 740180 29% /boot
tmpfs 199204 12 199192 1% /run/user/42
tmpfs 199204 0 199204 0% /run/user/0
[root@linux ~]# df | tail -n +2 | tr -s ' ' | cut -d ' ' -f 5 | sort -nr | tr -d % | head -3
29
9
1
[root@linux ~]# df | grep '^/dev' | tr -s ' ' % | cut -d % -f 5 | sort -nr
29
9
1
3. 过滤注释和空行
[root@linux ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jul 11 21:02:24 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rl-root / xfs defaults 0 0
UUID=515800b1-a654-40b9-9067-a9892ddeb62d /boot xfs defaults 0 0
/dev/mapper/rl-home /home xfs defaults 0 0
/dev/mapper/rl-swap none swap defaults 0 0
[root@linux ~]# cat /etc/fstab | grep -Ev '^#|^$'
/dev/mapper/rl-root / xfs defaults 0 0
UUID=515800b1-a654-40b9-9067-a9892ddeb62d /boot xfs defaults 0 0
/dev/mapper/rl-home /home xfs defaults 0 0
/dev/mapper/rl-swap none swap defaults 0 0
面试题:年龄总和
[root@linux ~]# cat age.txt
xiaoming=20
xiaohong=18
xiaoqiang=22
[root@linux ~]# cat age.txt | grep -Eo '[0-9]+' | paste -s -d+ | bc
60
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/275236.html