Linux 命令 - grep: print lines matching a pattern

grep 搜索文本文件中与指定正则表达式匹配的行

命令格式

grep [OPTIONS] PATTERN [FILE...]

命令参数

Generic Program Information

--help
  打印帮助信息

-V, --version
  打印版本信息

Matcher Selection

-E, --extended-regexp
  使用基本正则表达式(ERE)解释 PATTERN

-F, --fixed-strings
  每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。

-G, --basic-regexp
  使用基本正则表达式(BRE)解释 PATTERN

-P, --perl-regexp
  使用 Perl 正则表达式(PCRE)解释 PATTERN

Matching Control

-e PATTERN, --regexp=PATTERN
  使用 PATTERN 作为匹配模式

-f FILE, --file=FILE
  从文件获取匹配模式

-i, --ignore-case
  忽略大小写

-v, --invert-match
  输出不含匹配项的行

-w, --word-regexp
  单词精确匹配

-x, --line-regexp
  行精确匹配

General Output Control

-c, --count
  输出匹配项的数目

-l, --files-with-matches
  输出包含匹配项的文件名而不是直接输出匹配行

-L, --files-without-match
  与 -l 选项类似,输出的是包含不匹配项的文件名

-m NUM, --max-count=NUM
  当匹配 NUM 后停止读取文件

-o, --only-matching
  只显示匹配项而不是匹配行

-q, --quiet, --silent
  安静模式,不显示任何信息

-s, --no-messages
  当文件不存在或不可读时,不显示错误信息

Output Line Prefix Control

-b, --byte-offset
  在每个匹配行前加上该行在文件内的块号

-H, --with-filename
  在每个匹配行前加上文件名

-h, --no-filename
  多文件搜索时,抑制文件名输出

-n, --line-number
  在每个匹配行前加上该行在文件内的行号

Context Line Control

-A NUM, --after-context=NUM
  输出匹配行及其后 NUM 行的内容

-B NUM, --before-context=NUM
  输出匹配行及其前 NUM 行的内容

-C NUM, -NUM, --context=NUM
  输出匹配行及其前后 NUM 行的内容

实例

测试文件 test.txt:

The Zen of Python, by Tim Peters

Beautiful is better than ugly
Explicit is better than implicit
Simple is better than complex
Complex is better than complicated
Flat is better than nested
Sparse is better than dense
Readability counts
Special cases aren‘t special enough to break the rules
Although practicality beats purity
Errors should never pass silently
Unless explicitly silenced
In the face of ambiguity, refuse the temptation to guess
There should be one-- and preferably only one --obvious way to do it
Although that way may not be obvious at first unless you‘re Dutch
Now is better than never
Although never is often better than *right* now
If the implementation is hard to explain, it‘s a bad idea
If the implementation is easy to explain, it may be a good idea
Namespaces are one honking great idea -- let‘s do more of those

a) 输出含有 "com" 的行

[email protected]:~/huey/linux/cmdline$ grep com test.txt
Simple is better than complex
Complex is better than complicated

b) 匹配时忽略大小写

[email protected]:~/huey/linux/cmdline$ grep -i com test.txt
Simple is better than complex
Complex is better than complicated

c) 输出以 "complex" 开头的行,忽略大小写

[email protected]:~/huey/linux/cmdline$ grep -i ‘^complex‘ test.txt
Complex is better than complicated

d) 输出以 “idea” 结尾的行

[email protected]:~/huey/linux/cmdline$ grep ‘idea$‘ test.txt
If the implementation is hard to explain, it‘s a bad idea
If the implementation is easy to explain, it may be a good idea

e) 匹配空行

[email protected]:~/huey/linux/cmdline$ grep -n ‘^$‘ test.txt
2:

h) 输出含有 "good" 或 "bad" 的行

[email protected]:~/huey/linux/cmdline$ grep ‘good\|bad‘ test.txt
If the implementation is hard to explain, it‘s a bad idea
If the implementation is easy to explain, it may be a good idea
[email protected]:~/huey/linux/cmdline$ grep -E ‘good|bad‘ test.txt
If the implementation is hard to explain, it‘s a bad idea
If the implementation is easy to explain, it may be a good idea

i) 精确匹配单词 it,像 implicit、purity、purity 等这样的单词是不会被匹配的

[email protected]:~/huey/linux/cmdline$ grep -w it test.txt
There should be one-- and preferably only one --obvious way to do it
If the implementation is hard to explain, it‘s a bad idea
If the implementation is easy to explain, it may be a good idea

j) 输出含有 "Python" 的行及其后 3 行

[email protected]:~/huey/linux/cmdline$ grep -A 3 Python test.txt
The Zen of Python, by Tim Peters

Beautiful is better than ugly
Explicit is better than implicit

相关命令

egrep - 相当于 grep -E

fgrep - 相当于 grep -F

pgrep - 相当于 grep -P

时间: 2025-01-02 13:38:07

Linux 命令 - grep: print lines matching a pattern的相关文章

Linux 命令grep, egrep,正则表达式大全

Linux grep 命令     Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版

linux 命令grep正则表达式

Linux 命令grep正则表达式 在linux里面有处理文本的三剑,现在我要说的就是grep正则表达式的使用,正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串.vi grep ,awk ,sed 等都支持正则表达式..正则表达式有基本正则表达式和扩展正则表达式. grep默认就是基本表达式. 基本正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配. 扩展正则表达式:基于基本正则表达式多加了一些功能,基本一样. 1. grep命令 grep [参数]

每天一个linux命令-grep

Linux中grep命令是一个强大的文本搜索工具,它能使用正则表达式匹配文件,并将匹配的内容进行打印输出.grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来),他的使用权限是所有用户. 命令格式 grep [option] pattern filename 命令参数 -a,--text : 不要忽略二进制数据 -A,--after-context=NUM: 除了显示符合范本样式的那一列

linux 命令grep

grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行. grep命令的语法: grep  ‘word’  文件名 grep  ‘word’  文件1  文件2  文件3 grep  ‘字符串1  字符串2’  文件名 commad  |  grep  ‘ 某个东西 ’ commad  选项1  |  grep  ‘ 数据 ’ grep  --color  ‘数

搞搞Linux命令--grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名.搜索的结果被送到标准输出,不影响原文件内容. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成

Linux命令:grep命令 文本搜索

linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep这个应用程序最早由肯·汤普逊写成.grep原先是ed下的一个应用程序,名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印). grep是非常强大的命令,配合管道一起使

Linux 命令——grep | 正则表达式

感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixe

日志快速筛选 之 linux命令grep|uniq|wc|awk

以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠猜,这可不行. 那就打印记录每次的访问日志,尤其是访问接口时的参数及返回数据和耗费时间等,这是对自己将问题抛给上层及性能优化的依据.但是日志量应该是非常大的,一定要注意及时清理. 那么问题来了,当发现问题时,如何快速定位到错误的地方就很重要了. 日志样例如下(某次访问的产生的日志): [2017-0

Linux命令grep和find相关使用

一.Linux的alias命令的了解,alias命令主要是设置别名,简单话就是把一长串命令,简单到几个字符都可以实现相同原来.例如查看设置ip地址配置文件,但是我们使用别名就很简单如果在命令行设置,只是临时的,如果推出终端或者推出当前用户,别的用户登录,就无法使用,为了永久使用,就需要写到配置文件中.但是有两种配置,一种只针对这个用户的,还有是所有用户的1.针对当前用户的,只需要在用户的家目录里面设置.bashrc这个文件2.针对所有用户,需要在/etc/bashrc进行设置,在文件的最后添加这