siwen

siwen

😉

grep 命令

grep 文本过滤工具#

说明:

grep (global search regular expression (RE) and print out the line, 全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤搜索的特定字符。可使用正则表达式,能多种命令配合使用,使用上十分灵活。

语法:

grep [OPTION...] PATTERNS [FILE...] 
grep [OPTION...] -e PATTERNS ... [FILE...] 
grep [OPTION...] -f PATTERN_FILE ... [FILE...] 

grep 命令选项#

选项作用
-c统计文件中匹配的行数
-i忽略模式中的字母大小写
-n列出所有的匹配行,并显示行号
-v列出没有匹配模式的行,取反
-e多个选项间的逻辑或
-o只显示被模式匹配到内容
-l列出带有匹配内容的文件名
-w匹配整个单词
-q静默模式,不输出任何信息
-r递归搜索
-f根据文件内容匹配多个(文件中逐行写出要匹配的内容)
-Aafter, 后 n 行(被匹配到的行及后 n 行)
-Bbefore, 前 n 行(被匹配到的行及前 n 行)
-Ccontext,前后各 n 行(被匹配到的行及前后各 n 行)
-E使用扩展的正则表达式,相当于 egrep
-F相当于 fgrep,不支持正则表达式
-P使用 perl 正则表达式

使用帮助命令可查看全部选项(grep --help 或 man grep)

  • grep 使用 “标准正则表达式” 作为匹配标准
  • egrep 扩展的 grep 命令,相当于 grep -E ,使用扩展正则表达式作为匹配标准
  • fgrep 简化版的 grep 命令,不支持正则表达式,但搜索速度快,系统资源使用率低

示例#

# 统计空行的行数
[root@localhost ~]# grep -c '^$' test.txt

# 包含字符h的行(不区分大小写)
[root@localhost ~]# grep -i 'h' test.txt

# 列出所有空行 并显示行号
[root@localhost ~]# grep -n '^$' test.txt

# 列出所有非空行
[root@localhost ~]# grep -v '^$' test.txt

# 列出所有以S开头的行和空行
[root@localhost ~]# grep -e '^$' -e '^S' test.txt 

# 过滤所有的数字 只显示被匹配到的内容
[root@localhost ~]# grep -o '[0-9]' test.txt 

# 列出内容包含a的文件名
[root@localhost ~]# grep -l 'a' demo.txt test.txt pwd.txt

# 匹配包含单词you的行
[root@localhost ~]# grep -w 'you' test.txt 

# 根据file里面的范文进行匹配
[root@localhost ~]# grep -f file test.txt 

# 列出包含can的行以及其后三行 
[root@localhost ~]# grep -A3 'can' test.txt  

# 列出包含can的行以及其前三行 
[root@localhost ~]# grep -B3 'can' test.txt  

# 列出包含can的行以及其前后各三行 
[root@localhost ~]# grep -C3 'can' test.txt  

# 重复d字符最少2次
[root@localhost ~]# grep -E 'd{2,}' test.txt
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。