Linux行处理工具: grep (1)

简介: Linux行处理工具: grep (1)

之前我们已经介绍了linux awk工具,和linux jq工具,这次我们来看看linux grep工具。



什么是grep


grep最早是使用在unix操作系统上的命令行,后被移植到了Linux下(如果你对这段历史感兴趣,建立查询维基百科会更好点。),在Linux下,我们一般将grep称之为GUN grep(这里可以使用 grep -V来查看),而grep是一组命令的统称,grep下包含了egrep, fgrep, rgrep等,是较为著名的搜索行处理工具。


查看Linux grep版本

image.png

如何使用grep


grep命令格式为

grep [OPTION...] PATTERNS [FILE...]


grep可以直接搜索文件内容,亦可以配合管道进行搜索(这种更为常用),所以必备的参数是【匹配项】,我们也称之为模式,而选项和文件,则不是必备的,例如,一个最简答搜索可以是这样的: grep root,我们列举一个实际的例子:

cat /etc/passwd | grep root



我们来介绍下常用的选项和参数



匹配模式

-i: 忽略大小写

-w: 按单词进行匹配

-v: 匹配反转

-x: 强制匹配整列


匹配输出选项

-c: 输出匹配成功的行数

-l: 输出匹配成功的文件名

-L: 输出匹配失败的文件名

-m: 该选项会跟一个数值n,匹配成功n次后则不再进行匹配

-q: 匹配成功与否都不输出到标准输出,而是以返回值的呈现,匹配成功则为0,失败则为1

-s: 匹配会输出到标准输出,同时也会以返回值的方式呈现,匹配成功为0,失败为1


打印上下文

-C: 该选项会跟一个数值n ,匹配成功后,则会打印其前后n条数据

-A: 该选项会跟一个数值n ,匹配成功后,则会打印其后面n条数据

-B: 该选项会跟一个数值n ,匹配成功后,则会打印其前面n条数据



grep 案例


匹配文件内容是否存在


相比各位多多少少都写过shell,如果让大家写一个判断文件中是否出现了某个单词,大家会这么写呢?


假如有如下文件

image.png

我们需要判断文件中是否出现pdudo,让其作为shell来判断,按照我以前的一般思路来写写

grep pdudo test1 | wc -l


其中 grep pdudo test1是搜索test1文件中匹配pdudo的行

wc -l: 获取匹配的行数

然后我们根据其值,若为0则匹配失败,否则为匹配成功。

现在我们仅需要这样写即可

grep -q pdudo test1


根据其返回值,可以来判断匹配内容是否存在,若为0,则匹配成功,若为1则匹配失败。

我们来试试

image.png

这样写,好了很多,不是么?



忽略大小写


若我们想忽略大小写,我们可以使用-i选项即可(注意grep默认匹配大小写的),例如 我们想搜索 pdudo不论大小写的,都可以。


假设有如下文件,我们想搜索一下pdudo,不论大小写


image.png

我们可以使用命令grep -i pdudo

image.png

按照单词搜索

若有如下文件,我们仅想搜索I_love_you这个单词,而不是yan_I_love_you,则我们可以使用-w处理该问题: grep -w 'I_love_you' test1

image.png

我们可以看到,默认搜索会匹配2行,而使用-w之后,仅匹配该单词所在的行,注意,这里使用中文不得行哈,使用-w搜索不得行的哈。



打印匹配行上下文

我们可以使用-C n来获取匹配成功后,前后n行数据。

例如有如下文件

image.png



我们想获取pdudo前后2行的数据,使用grep可以这样写: grep -C 2 pdudo test1


image.png

剩下的,就不一一介绍了,大家有机会可以自行实验一下。



总结

我们这次学习了grep基本命令,怎么样,感觉grep很强大吧,那当然了,grep可是称为linux三剑客之一。快来动动你小手指,来试试吧。


相关文章
|
29天前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
74 8
|
2月前
|
监控 Unix Linux
Linux系统工具
Linux系统工具
52 6
|
2月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
64 5
Linux系统之安装Ward服务器监控工具
|
2月前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
41 2
Linux系统之安装cook菜谱工具
|
1月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
126 1
|
1月前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
45 1
|
3月前
|
监控 Linux
linux之grep详解
linux之grep详解
|
3月前
|
存储 Linux Shell
linux查找技巧: find grep xargs
linux查找技巧: find grep xargs
43 13
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
732 2
|
3月前
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
157 9