浅谈 Grep 的使用方法


 

1. 基本概念

grep(缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。

1.1. 基本语法

搜索标准输出(即文本流)

$ grep [options] search_string

在文件中搜索确切的字符串:

$ grep [options] search_string path/to/file

打印 myfile.txt 中包含字符串“hello”的行

$ grep 'hello' myfile.txt

1.2. 参数选项

选项示例说明
-igrep -i ^DA demo.txt忘记区分大小写
-wgrep -w "of" demo.txt仅搜索完整的单词
-Agrep -A 3 'Exception' error.log匹配字符串后显示 3 行
-Bgrep -B 4 'Exception' error.log在匹配字符串前显示 4 行
-Cgrep -C 5 'Exception' error.log在匹配字符串周围显示 5 行
-rgrep -r 'github.io' /var/log/nginx/递归搜索 (在子目录内)
-vgrep -v 'warning' /var/log/syslog返回所有与模式不匹配的行
-egrep -e '^al' filename使用正则表达式 (以'al'开头的行)
-Egrep -E 'ja(s|cks)on' filename扩展正则表达式 (包含 jason 或 jackson 的行)
-cgrep -c 'error' /var/log/syslog计算匹配数
-lgrep -l 'robot' /var/log/*打印匹配文件的名称
-ogrep -o search_string filename只显示字符串的匹配部分
-ngrep -n "go" demo.txt显示匹配的行号

2. 示例说明

2.1. 搜索命令行历史记录

history | grep passwd   # 查询输入过 passwd 命令的记录

2.2. 搜索结果中包括或者排除指定文件

# 目录中所有的 .php 和 .html 文件中
# 递归搜索字符 "test()"
grep "test()" . -r --include *.{php,html}

# 在搜索结果中排除所有 README 文件
grep "test()" . -r --exclude "README"

# 在搜索结果中排除 filelist 文件列表里的文件
grep "test()" . -r --exclude-from filelist

2.3. 搜索多个文件并查找匹配文本在哪些文件中

grep -l "text" file1 file2 file3...

2.4. 输出包含匹配字符串的行数 -n 选项

grep "text" -n file_name
cat file_name | grep "text" -n

#多个文件
grep "text" -n file_1 file_2

2.5. 多级目录中对文本进行递归搜索

grep "text" . -r -n

2.6. 忽略匹配样式中的字符大小写

echo "hello world" | grep -i "HELLO"

2.7. 统计文件或文本中包含匹配字符串的行数 -c 选项

grep -c "text" file_name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值