(grep) - 强大的文本搜索工具

grep

强大的文本搜索工具

补充说明

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

选项

-a --text  # 不要忽略二进制数据。
-A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b --byte-offset                           # 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-B<显示行数>   --before-context=<显示行数>   # 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count    # 计算符合范本样式的列数。
-C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> --directories=<动作>  # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> --regexp=<范本样式>   # 指定字符串作为查找文件内容的范本样式。
-E --extended-regexp             # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> --file=<规则文件>     # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F --fixed-regexp   # 将范本样式视为固定字符串的列表。
-G --basic-regexp   # 将范本样式视为普通的表示法来使用。
-h --no-filename    # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H --with-filename  # 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i --ignore-case    # 忽略字符大小写的差别。
-l --file-with-matches   # 列出文件内容符合指定的范本样式的文件名称。
-L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。
-n --line-number         # 在显示符合范本样式的那一列之前,标示出该列的编号。
-q --quiet或--silent     # 不显示任何信息。
-R/-r  --recursive       # 此参数的效果和指定“-d recurse”参数相同。
-s --no-messages  # 不显示错误信息。
-v --revert-match # 反转查找。
-V --version      # 显示版本信息。   
-w --word-regexp  # 只显示全字符合的列。
-x --line-regexp  # 只显示全列符合的列。
-y # 此参数效果跟“-i”相同。
-o # 只输出文件中匹配到的部分。

规则表达式

^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
$    # 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。    
.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    
*    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    
.*   # 一起用代表任意字符。   
[]   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
[^]  # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    
\(..\)  # 标记匹配字符,如'\(love\)',love被标记为1。    
\<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>      # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
x\{m\}  # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    
x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    
x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   
\w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   
\W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b    # 单词锁定符,如: '\bgrep\b'只匹配grep。  

grep命令常见用法

在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:

grep match_pattern file_name
grep "match_pattern" file_name

在多个文件中查找:

grep "match_pattern" file_1 file_2 file_3 ...

输出除之外的所有行 -v 选项:

grep -v "match_pattern" file_name

标记匹配颜色 --color=auto 选项:

grep "match_pattern" file_name --color=auto

使用正则表达式 -E 选项:

grep -E "[1-9]+"
或
egrep "[1-9]+"

只输出文件中匹配到的部分 -o 选项:

echo this is a test line. | grep -o -E "[a-z]+\."
line.

echo this is a test line. | egrep -o "[a-z]+\."
line.

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

grep -c "text" file_name

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

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

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

打印样式匹配所位于的字符或字节偏移:

echo gun is not unix | grep -b -o "not"
7:not

#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项  **-b -o**  一般总是配合使用。

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

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

grep递归搜索文件

在多级目录中对文本进行递归搜索:

grep "text" . -r -n
# .表示当前目录。

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

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

选项 -e 制动多个匹配样式:

echo this is a text line | grep -e "is" -e "line" -o
is
line

#也可以使用 **-f** 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。
cat patfile
aaa
bbb

echo aaa bbb ccc ddd eee | grep -f patfile -o

在grep搜索结果中包括或者排除指定文件:

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

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

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

使用0值字节后缀的grep与xargs:

# 测试文件:
echo "aaa" > file1
echo "bbb" > file2
echo "aaa" > file3

grep "aaa" file* -lZ | xargs -0 rm

#执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用。

grep静默输出:

grep -q "test" filename
# 不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。

打印出匹配文本之前或者之后的行:

# 显示匹配某个结果之后的3行,使用 -A 选项:
seq 10 | grep "5" -A 3
5
6
7
8

# 显示匹配某个结果之前的3行,使用 -B 选项:
seq 10 | grep "5" -B 3
2
3
4
5

# 显示匹配某个结果的前三行和后三行,使用 -C 选项:
seq 10 | grep "5" -C 3
2
3
4
5
6
7
8

# 如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符:
echo -e "a\nb\nc\na\nb\nc" | grep a -A 1
a
b
--
a
b

热点新闻

美国企业暂停政治捐款:实质影响有限 更具有象征意义

更多大公司在采取行动,纷纷与美国总统特朗普及其共和党盟友划清界限。1月6日,特朗普的支持者暴力冲击美国国会大厦之后,美国科技业、银行业、制造业等各大公司纷纷宣布,暂停对投票反对认证总统选举结果的共和党人的政治捐款。 阅读全文

发布于:2021-01-15T15:44:44Z  |  163次阅读  |  详细内容 »

比亚迪王传福:电动车全面替代燃油车的时机已成熟

1月16日,比亚迪股份有限公司董事长王传福在第七届中国电动汽车百人会线上论坛上发表演讲时表示,随着近年来电动车的电池、电机、电控等技术越来越成熟,在加速、噪音、能耗、维修便利性、智能化和全生命周期成本等方面已全面超越了燃油车,电动车全面替代燃油车的时机已成熟。 阅读全文

发布于:2021-01-16T23:44:32Z  |  116次阅读  |  详细内容 »

三星Galaxy S21系列在韩国预售量要比S20高出15%-20%

虽然 Galaxy S20 系列拥有诸多新功能、新体验,但由于多方面的原因该系列的销量并不好。不过本月发售的 Galaxy S21 系列有望带来改变,最新报道称 S21 在韩国本土市场的预订量明显高于 S20 系列。 阅读全文

发布于:2021-01-21T18:45:11Z  |  103次阅读  |  详细内容 »

全国小学生喜提最长寒假 低价试听网课用户暴增300%

对于全国的小学生来说,今年的寒假来得更早,而针对中小学生的网课又开始大量上线。记者在采访中了解到,很多家长在寒假前就为孩子提前规划,把网课加入到必买清单中。线上教育业内人士告诉记者,寒假一直以来就是传统的网课报名高峰。 阅读全文

发布于:2021-01-17T16:44:37Z  |  97次阅读  |  详细内容 »

女生放假将玩偶绑在背上带回家 网友:这也太有爱心了

近日,某高校女生放假时将玩偶绑在背上带回家吸引了超高回头率。1月13日,广西梧州一高校学生放假,该校一名女生本来打算将玩偶快递回家,谁知看到桌上有线,就把玩偶捆绑在了身上,就这么把玩偶带回了家。 阅读全文

发布于:2021-01-16T22:19:07Z  |  73次阅读  |  详细内容 »

百度网盘内容商城将于1月31日下线:已购内容不受影响

1月15日消息,从网盘诞生的第一天起,便开始影响着人们移动存储的方式,从8G优盘升级为2TB网盘,便捷、快速、空间大,就成为用户选择网盘的主要原因。作为网盘领域的佼佼者,百度网盘一经推出便受到大量用户争相使用。今日,从百度网盘官网了解到,其内容商城将于2021年1月31日下线,已购买的内容不受影响,用户可通过APP来查看。 阅读全文

发布于:2021-01-15T20:17:44Z  |  61次阅读  |  详细内容 »

全球芯片危机恶化 福特关闭德国工厂1个月

福特下令德国一家工厂停产一个月,这一最新迹象表明,全球芯片短缺正给汽车制造商带来越来越大的压力。福特表示,由于芯片短缺和需求疲软,它将从周一起到2月19日暂停其在德国萨尔路易斯工厂的生产。这家工厂生产福特在欧洲最受欢迎的汽车福克斯(Focus),拥有约5000名员工。 阅读全文

发布于:2021-01-19T00:18:33Z  |  54次阅读  |  详细内容 »

统统要下架 支付宝等平台不许再卖互联网存款产品

在一些互联网平台先后撤下银行存款产品后,金融管理层进一步对相关业务“一槌定音”。记者今日从监管部门获悉,银保监会、人民银行近日联合印发《关于规范商业银行通过互联网开展个人存款业务有关事项的通知》(下称《通知》)。 阅读全文

发布于:2021-01-15T22:23:10Z  |  54次阅读  |  详细内容 »

《杀手3》上市预告公开 暗杀即将开启

《杀手3》即将于1月20日发售,登陆Epic、Stadia、PS5、XSX、PS4、XB1、Switch平台,IO Interactive为玩家带来了游戏的上市预告。杀手47将带领玩家在迪拜、英国达特穆尔、德国柏林、重庆、阿根廷门多萨、罗马尼亚喀尔巴阡山脉六个地方进行暗杀任务。 阅读全文

发布于:2021-01-19T00:18:02Z  |  51次阅读  |  详细内容 »

微软公司副总裁Julia White将离开公司 加入SAP

微软公司副总裁朱莉娅-怀特(Julia White)将离开公司,她已经在微软工作了20年,在过去的5年里,Julia负责领导Azure、开发者工具和服务器的产品营销工作。Julia White于2001年首次加入微软,担任产品经理。 阅读全文

发布于:2021-01-16T02:44:31Z  |  51次阅读  |  详细内容 »

美团互助1月31日关停 将全额返还会员分摊

1月15日下午消息,美团互助今日发布公告称,为聚焦主业发展,将于2021年1月31日24点正式关停。据悉,美团互助在关停后,将全额返还所有会员的分摊费用。同时,对1月31日前不幸确诊大病的会员,提供合理的互助金赔付,全部费用由平台承担。 阅读全文

发布于:2021-01-15T18:57:26Z  |  50次阅读  |  详细内容 »

Flash停用导致列车调度系统瘫痪?大连车务段官方回应来了

1月15日消息,针对“Flash停用导致列车调度系统直接瘫痪”事件大连车务端在15日在官方微博进行了回应表示,受Flash停用影响的不是铁路列车调度系统,而是大连车务段部分新购置并安装最新Flash版本的电脑无法通过浏览器访问统计现在车系统。 阅读全文

发布于:2021-01-15T17:23:34Z  |  50次阅读  |  详细内容 »

海盗湾创始人认为Parler无法保持在线令人尴尬

作为海盗湾最初的联合创始人之一,Peter Sunde Kolmisoppi对保持有争议的服务在线有一定的了解。Kolmisoppi和他的同事们花了数十年的时间,与全球企业、政府和执法机构的联盟进行斗争,后者意图将这家文件共享网站从互联网上抹去,但没有成功。 阅读全文

发布于:2021-01-15T03:15:02Z  |  50次阅读  |  详细内容 »

点个外卖就“被贷款”?互联网平台授信付款流程合理吗?

1.5元买个菜就“被贷款”了?这是不少消费者近期所遇到的困扰。近日,据北京青年报报道,网友“做减法的葱姑娘”表示,前几天收到一条短信,提示有贷款记录,并附上了链接。“我第一时间想到被骗,赶紧打客服电话,客服也没法现场回答,让我按照链接上传短信截屏,他们查清后给我电话。原来是被贷款了。” 阅读全文

发布于:2021-01-15T00:14:46Z  |  49次阅读  |  详细内容 »

字节跳动入股后腾讯突然停更《红警OL》 玩家组团维权

“我们现在就像是那种约好了朋友,换上了新装,买好了门票,打算去迪士尼好好体验一把的游客,但入园之后发现没有主题乐园、没有城堡、没有巴斯光年,只有光秃秃的旋转木马在一圈一圈转……”玩家李潜如此描述他当下的游戏体验。 阅读全文

发布于:2021-01-15T15:52:31Z  |  48次阅读  |  详细内容 »

原锤子团队被合并:不再研发坚果手机、TNT显示器

今日有媒体报道称,字节跳动在1月13日内部宣布,将原锤子科技团队组建的新石实验室,并入Musical.ly原创始人阳陆育领导的教育硬件团队。今后,字节跳动的硬件团队由阳陆育统一负责,并向字节跳动高级副总裁、教育业务负责人陈林汇报。 阅读全文

发布于:2021-01-17T22:44:28Z  |  47次阅读  |  详细内容 »

热门Linux命令