文本处理三剑客之grep

本文最后更新于:2023年12月5日 晚上

文本搜索工具,对目标文本逐行进行匹配检查,打印匹配的行。

grep [OPTION]... PATTERN [FILE]...

-m n       # 匹配n次后停止
-v         # 对匹配的内容取反
-i         # 忽略大小写
-n         # 显示匹配内容的行号
-c         # 统计匹配的行号
-o         # 仅显示匹配的内容,而不是整行
-q         # 静默模式,不输出任何信息
-A n       # after,匹配到的每行,再向下多匹配n行
-B n       # before,匹配到的每行,再向上多匹配n行
-C n       # context,匹配到的行,再向上和向下各多匹配n行
-e         # 当搜索条件有多个时,使用-e,多个搜索条件之间是或关系
-w         # 匹配整个单词,例如我想匹配root,不加-w会匹配到rooter,加-w就不会出现这种情况
- -E       # 相当于egrep
- -F       # 支持正则表达式,相当于fgrep
-f file    # 搜索条件可以写在文件中,每行是一个搜索条件,多个搜索条件之间是或的关系
- -r       # 递归目录,但不处理软链接
- -R       # 递归目录,处理软件链接

-e 示例:

lujinkai@Z510:~/data/test$ grep -e 'root' -e 'ljk' passwd
root:x:0:0:root:/root:/bin/bash
ljk:x:1001:1001::/home/ljk:/bin/bash

-w 示例:

-f file 示例:

lujinkai@Z510:~/data/test$ echo '^root' > re.txt
lujinkai@Z510:~/data/test$ cat re.txt
^root
lujinkai@Z510:~/data/test$ grep -f re.txt passwd
root:x:0:0:root:/root:/bin/bash

练习

1.取两个文件的相同行

# 思路:使用-f参数,将第一个文件作为搜索条件
grep -f f1.txt f2.txt

2.分区利用率最大的值

df -h | grep '^/dev/sd' | grep -Eo '[0-9]{,3}%' | tr -d % | sort -nr | head -n1

2.哪个 IP 和当前主机连接数最多的前三位

3.连接状态的统计

4.算出所有人的年龄总和

lujinkai@Z510:~/data/test$ cat age.txt
xiaoming=20
xiaohong=18
xiaoqiang=22

lujinkai@Z510:~/data/test$ grep -Eo '[0-9]{,2}' age.txt | paste -s -d+ | bc

文本处理三剑客之grep
http://blog.lujinkai.cn/运维/基础/文本处理/文本处理三剑客之grep/
作者
像方便面一样的男子
发布于
2020年12月9日
更新于
2023年12月5日
许可协议