grep命令最常用的功能总结

GREP命令常见用法 常用参数: -a #不要忽略二进制数据 -A #除了显示符合范本样式的那一行之外,并显示该行之后的内容 -b #在显示符合范本样式的那一行之外,并显示该行之前的内容 -B #除了显示符合样式的那一行之外,并显示该行之前的内容 -c #计算符合范本样式的列数 -C #除了显示符合范本样式的那一列之外,并显示该列之前后的内容 -d #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作 -e #指定字符串作为查找文件内容的范本样式 -E #将范本样式为延伸的普 阅读详情

1. grep最简单的使用方法,匹配一个词:grep word filename

2. 可以从多个文件中匹配:grep word filename1 filenam2 filename3

3. 可以使用正则表达式匹配:grep -E pattern f1 f2 f3...

4. 可以使用-o只打印匹配的字符,如下所示:

lichao@ubuntu:command$ echo this is a line. | grep -E -o "[a-z]*\."
line.
5. 打印除匹配行之外的其他行,使用-v

lichao@ubuntu:command$ echo -e "1\n2\n3\n4" | grep -v -E "[1-2]"
3
4

6. 统计匹配字符串的行数,使用-c

lichao@ubuntu:command$ echo -e "1111\n2222" | grep -E "[1-2]" -c
2

7. 如果我们统计字符串模式匹配的次数,可以结合-o和-c,如下:

lichao@ubuntu:command$ echo -e "1111\n2222" | grep -o -E "[1-2]"  | wc -l
8

8. 如果需要显示行号,可以打开-n,如下:

lichao@ubuntu:command$ echo -e "1111\n2222\n33333\n44444" | grep -n -E "3"
3:33333

9. -b选项可以打印出匹配的字符串想对于其所在的行起始位置的偏移量(从0开始),通常配合-o使用,如下:

lichao@ubuntu:command$ echo "0123456789" | grep -b -o 4
4:4

10. 当字符串在多个文件中匹配时,-l选项将只打印文件名


11. -L与-l相对,只打印不匹配的文件名

lichao@ubuntu:command$ cat test1.txt
linux
is
fun
lichao@ubuntu:command$ cat test2.txt
a 
very
popular 
os,
linux
lichao@ubuntu:command$ cat test3.txt
what
the
fxxk
lichao@ubuntu:command$ grep -l linux test1.txt test2.txt test3.txt
test1.txt
test2.txt
lichao@ubuntu:command$ grep -L linux test1.txt test2.txt test3.txt
test3.txt

12. 打开递归搜索功能

lichao@ubuntu:command$ grep -n -R linux . 
./test2.txt:5:linux
./test1.txt:1:linux

13. 忽略大小写:-i

lichao@ubuntu:command$ echo "HELLO WORLD" | grep -i "hello"
HELLO WORLD

14. 匹配多个字符串模式

lichao@ubuntu:command$ echo "This is a line." | grep -e "This" -e "is" -e "line" -o
This
is
line

15. 用单独的文件提供匹配样式,每个匹配的样式作为一行,如下例所示:

lichao@ubuntu:command$ cat pattern.txt
1$
2
3
lichao@ubuntu:command$ cat num.txt 
1
2
3
4
5
6
7
8
9
10
lichao@ubuntu:command$ grep -f pattern.txt num.txt 
1
2
3

16. 打印匹配行上下文信息,使用 -A n打印匹配行及其后n行信息;使用-B n打印匹配行及其前n行信息;使用 -C n,打印匹配行及其前后n行信息;如果有多重匹配,将使用--隔离。示例如下:

lichao@ubuntu:command$ seq 1 10 | grep 5 -A 3
5
6
7
8
lichao@ubuntu:command$ seq 1 10 | grep 5 -B 3
2
3
4
5
lichao@ubuntu:command$ seq 1 10 | grep 5 -C 3
2
3
4
5
6
7
8
lichao@ubuntu:command$ echo -e "a\nb\nc\nd\na\nb\nc\nd\n" | grep a -A 2
a
b
c
--
a
b
c

17. 使用-q进入静默模式,该模式下,grep命令运行目的仅仅是执行一个条件测试,通常在脚本中使用。通过检查其返回值进行下一步操作。示例如下:

lichao@ubuntu:command$ cat tmp.txt
hello
world
lichao@ubuntu:command$ cat tmp.csh
#!/bin/bash
if [ $# -ne 2 ]; then
	echo "Usage: $0 match_pattern file_name"
	exit
fi
match=$1
file=$2
grep -q $match $file
if [ $? -ne 0 ]; then
	echo "$match not exist in $file"
else
	echo "$match exist in $file"
fi
lichao@ubuntu:command$ ./tmp.csh hello tmp.txt
hello exist in tmp.txt

18. -Z选项在输出匹配文件名时将以/0结尾配合xargs -0可以发挥很多作用,例如删除匹配某个模式的文件如下:

lichao@ubuntu:command$ ls -llrt
total 28
-rw-rw-r-- 1 lichao lichao  13 Nov  1 20:38 test1.txt
-rw-rw-r-- 1 lichao lichao  27 Nov  1 20:39 test2.txt
-rw-rw-r-- 1 lichao lichao  14 Nov  1 20:39 test3.txt
-rw-rw-r-- 1 lichao lichao  21 Nov  1 20:45 num.txt
-rw-rw-r-- 1 lichao lichao   7 Nov  1 20:45 pattern.txt
-rw-rw-r-- 1 lichao lichao  12 Nov  1 21:25 tmp.txt
-rwxr-xr-x 1 lichao lichao 217 Nov  1 21:27 tmp.csh
lichao@ubuntu:command$ cat test1.txt
linux
is
fun
lichao@ubuntu:command$ cat test2.txt
a 
very
popular 
os,
linux
lichao@ubuntu:command$ grep "linux" * -lZ | xargs -0 rm
lichao@ubuntu:command$ ls
num.txt  pattern.txt  test3.txt  tmp.csh  tmp.txt
以上命令将包含linux字符串的test1.txt和test2.txt删除。


19. 排除/包括文件或者目录:1)--include *{.c,.cpp} 只在目录中搜索.c和.cpp文件;2)--exclude "README" 排除所有README文件 3) --include-dir 仅在某些目录中搜索 4) --exclude-dir 排除某些目录 5) --exclude-from FILE 从文件FILE中读取需要排除的文件列表

lichao@ubuntu:test$ ls
dir1  dir2  exclude.config  test1.txt  test2.doc  test3.word
lichao@ubuntu:test$ cat test1.txt 
linux 
is 
fun
lichao@ubuntu:test$ cat test2.doc 
wonderful 
os,
linux
lichao@ubuntu:test$ cat test3.word 
wonderful 
os,
linux
lichao@ubuntu:test$ ls dir1/
test1.txt  test2.doc  test3.word
lichao@ubuntu:test$ ls dir2/
test1.txt  test2.doc  test3.word
lichao@ubuntu:test$ cat exclude.config 
*.txt
lichao@ubuntu:test$ grep "linux" -R -n . 
./test2.doc:3:linux
./test3.word:3:linux
./test1.txt:1:linux 
./dir2/test2.doc:3:linux
./dir2/test3.word:3:linux
./dir2/test1.txt:1:linux 
./dir1/test2.doc:3:linux
./dir1/test3.word:3:linux
./dir1/test1.txt:1:linux 
lichao@ubuntu:test$ grep "linux" -R -n . --include *.txt --include *.doc
./test2.doc:3:linux
./test1.txt:1:linux 
./dir2/test2.doc:3:linux
./dir2/test1.txt:1:linux 
./dir1/test2.doc:3:linux
./dir1/test1.txt:1:linux 
lichao@ubuntu:test$ grep "linux" -R -n . --exclude *.txt --eclude *.doc
grep: unrecognized option '--eclude'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
lichao@ubuntu:test$ grep "linux" -R -n . --exclude *.txt --exclude *.doc
./test3.word:3:linux
./dir2/test3.word:3:linux
./dir1/test3.word:3:linux
lichao@ubuntu:test$ grep "linux" -R -n . --exclude-dir dir1
./test2.doc:3:linux
./test3.word:3:linux
./test1.txt:1:linux 
./dir2/test2.doc:3:linux
./dir2/test3.word:3:linux
./dir2/test1.txt:1:linux 
lichao@ubuntu:test$ grep "linux" -R -n . --exclude-dir dir1 --exclude-dir dir2
./test2.doc:3:linux
./test3.word:3:linux
./test1.txt:1:linux 
lichao@ubuntu:test$ grep "linux" -R -n . --exclude-from exclude.config 
./test2.doc:3:linux
./test3.word:3:linux
./dir2/test2.doc:3:linux
./dir2/test3.word:3:linux
./dir1/test2.doc:3:linux
./dir1/test3.word:3:linux

已上即为grep常用的选项。


注意:转载请注明出处。





MounRiver Studio实战:像管理个人项目一样整理沁恒MCU的EVT例程(附文件结构图) 本文详细介绍了如何使用MounRiver Studio重构沁恒MCU的EVT例程,实现工程化管理。通过分析官方EVT设计的局限性,提出标准化的目录结构和迁移步骤,帮助开发者提升代码可维护性和团队协作效率。文章还提供了MounRiver Studio的关键配置参数和常见问题排查指南,适用于沁恒MCU开发者。 阅读详情

相关推荐

BCIC IV 2a数据集:从下载到实战应用全解析

本文全面解析了BCI Competition IV 2a(BCIC IV 2a)数据集的应用流程。从官方渠道下载数据、解析其结构,到在MATLAB和Python环境中进行数据导入、预处理(包括处理特殊受试者A04T),并详细演示了从特征提取(如CSP)到分类(如LDA、SVM)的完整实战步骤,为脑机接口研究者提供了从入门到实践的清晰指南。

weixin_28235513的博客 974

grep的语法和用法

grep命令的格式: grep   [options]   PATTERN  [FILE] 其中: 1,pattern是用正则表达式书写的模式。 2,FILE是要查找的文件,可以是用空格间隔的多个文件,省略FILE时表示在标准输入中查找 常用参数: -E :采用规则表示式去解释样式。 -c:只显示匹配行的次数。 -i:搜索时不区分大小写。 -n:输出匹配行的行号。 -v:输出不

tianmo2010的专栏 8904

Palantir的Ontology:从静态知识图谱到动态业务引擎的跃迁

本文探讨了Palantir的Ontology技术如何将静态知识图谱升级为动态业务引擎。通过引入函数和行动作为核心元素,Ontology实现了业务逻辑的自动化响应与执行,显著提升物流、能源等领域的运营效率。文章详细解析了其混合存储引擎、状态监听网络等关键技术设计,并对比展示了传统架构与Ontology架构的业务价值差异。

weixin_42570296的博客 200

lsof |grep delete卡住_Linux:命令file 和 grep

这篇文章将从三个方面聊一聊Linux中的file和grep命令介绍grep命令(egrep,fgrep),示例介绍find命令,示例grep与find命令使用对比,示例介绍grep命令grep的前言grep据说是linux数据处理三剑客之一(另外两个分别是sed,awk)也可以感受到grep命令在Linux的数据处理方面的强大之处。grep is a command line utility in...

weixin_40003478的博客 1032

粒子群算法实战:用Matlab解决旅行商问题(TSP)的完整代码解析

本文提供了使用粒子群算法解决旅行商问题的完整Matlab实战指南。通过将连续空间的粒子群算法进行离散化改造,采用基于交换序的策略来更新粒子位置与速度,并给出了从问题定义、数据结构设计、核心函数实现到主迭代循环的详细代码解析。文章还探讨了参数调优、性能优化及处理复杂TSP变体的进阶思路,为物流规划、路径优化等领域的工程应用提供了可直接复用的解决方案。

m2n3o4p5的博客 350

用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑

本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。

weixin_42524171的博客 505

LINUX的GREP命令介绍和使用

grep 命令是“全局正则表达式打印”的缩写,是一种广泛使用的 Linux 工具,它使用户能够根据特定模式搜索文本或输出。该脚本将打印“发现错误!此命令将仅打印 file.txt 中的单词“hello”,忽略该行的其余部分。此命令将打印 file.txt 中包含“hello”的所有行,无论大小写。此命令将打印 file.txt 中包含“hello”或“world”的行。此命令将打印 file.txt 中不包含单词“hello”的所有行。此命令将打印 file.txt 中以“错误:”或“警告:”开头的行。

linuxunion的博客 1618

HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计

HTML5期末大作业:我的家乡——郑州美景HTML+CSS(5页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求, 喜

qq_365392777 1万+

Linux grep 命令以及ps命令

Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。 语法 grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-...

码纳须臾 1363

2024 年 9 月青少年软编等考 C 语言三级真题解析

2024 年 9 月青少年软编等考 C 语言三级真题解析。

发布少儿编程考级的真题和优秀竞赛题解析,以及一些讲义。 1739

万字详解 PostgreSQL 的详细安装方式(Linux、Windows、macOS、Docker 全平台覆盖)

本文详细介绍了PostgreSQL在四大主流环境下的安装方法: Linux系统:针对Ubuntu/Debian和CentOS/RHEL系,分别提供APT/YUM仓库安装步骤,包括初始化配置和服务管理 Windows系统:通过图形化安装程序指导完成安装,包含组件选择、密码设置和pgAdmin配置 macOS系统:推荐使用Homebrew一键安装,支持Apple Silicon和Intel芯片 Docker容器:提供容器化部署方案(文中未展开) 文章强调安装前的版本选择、权限管理和存储规划,并针对各平台给出验证

数据知道的博客 4498

Linux最常用的20条命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Li

chajinglong的专栏 2万+

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 966

(转)最常用的Linux命令

原文链接:[url]http://blog.youkuaiyun.com/ljianhui/article/details/11100625[/url] 玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linu...

雕刻时间的专栏 203

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

linux最常用的20条命令

Linux之最常用的20条命令 玩过Linux的人都会知道,Linux中的命令的确是非常多,但是我们只需要掌握我们最常用的命令就可以了。因为不想在使用是总是东查西找,所以在此总结一下,方便一下以后的查看。不多说,下面就说说我最常用的Linux命令...

蓝带的博客 552

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux常用命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理L...

Lzc的博客 202

linux最常用的20个命令(一)

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Linux系统的人有所不同。因为不想在使用是总是东查西找,所以在此总结一下,方便一下以后的查看。不多说,下面就说说我

qq_2580123的博客 381

linux中find相对路径_新手入门linux之最常用的20条命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Li...

weixin_33411550的博客 205

常用的linux命令20条,Linux常用的20条命令

1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:[plain] view plain copy print?cd /root/Docements # 切换到目录/root/Docementscd ./path # 切换到当前目录下的path目录中,“.”表示当前目录cd ../pa...

weixin_42500642的博客 666

linux的20个常用命令

接触过linux的人都知道,linux是通过大量的命令来进行操作的,那接下来笔者就总结了20个最常用的命令给大家熟悉一下 1、cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如: 2、ls命令 这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多,下面就列出一些我常用的参数吧,如下: ...

weixin_42409884的博客 1289

linux 常用的20条命令,Linux常用的20条命令

1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:[plain] view plain copy print?cd /root/Docements # 切换到目录/root/Docementscd ./path # 切换到当前目录下的path目录中,“.”表示当前目录cd ../pa...

weixin_36128239的博客 152

初窥Linux 之 我最常用的20条命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Lin

224

linux常用的20个命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Lin

zhaxiaodong的博客 486

linux常用命令

 玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个

u014305451的博客 410
上一篇: 面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户
下一篇: 用Shell脚本过滤Hadoop中不能访问的节点
下木
博客等级 码龄16年 88粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值