Linux命令之grep

Linux命令之grep,第1张

grep(global search regular expression(RE)and print out the line 即:全面搜索正则表达式并把行打印出来)命令是一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep [option] pattern file

-a:不要忽略二进制数据

-A<n>:除了显示匹配的行外,还显示之后的n行

-b:在符合条件的行之前,显示该行第一个字符的编号

-B<n>:除了显示符合条件的行外,还显示之前的n行

-c:计算符合条件的列数

-C<n>:除了显示符合条件的行外,显示该行之前和之后各n行

-H:显示匹配行所属文件

-i:不区别大小写

-n:列出符合条件的行,并显示行号

-r:查询文件夹的内容

-x:只显示全行符合的行

-o:只显示匹配到的内容

递归搜索

grep -r -n "ql2500" .

参考自 linux学习笔记24---命令grep

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具,它能够捕获一个命令的输出,然后传递给另外一个命令。之所以会用到这个命令,关键是由于 很多命令不支持管道来传递参数 ,而日常工作中就有这个需要,所以就有了 xargs 命令。

我们经常会用grep命令在文件中查找需要的内容,比如现在一个文件夹里面有9个文件,有三种格式txt, csv和gz压缩文件。

123里面存的内容都一样为

456里面存的内容也一样为

789里面存的都是

如果我现在要从所有的文件里面找“apple”

我会得到下面的结果,你会发现 grep不能从gz文件中查找内容

zgrep 这个命令可以解决这个问题,这样就不需要先解压然后再去查找了

会得到如下结果,显示了所有文件格式中找到的“apple”,并且显示了匹配的行号

如果只想在符合某种特征的文件中找你感兴趣的内容呢?比如在文件名中包含123的文件中查找“apple”。这时候就需要管道了,你需要先找到这样的文件然后再从中找“apple”

第一步找到名字中包含123的文件

会得到文件名中包含123的所有文件

第二步查找“apple”

然后我们再来从中找“apple”,你会发现下面这条命令不work,你啥都得不到

这就是我们开篇提到的, 很多命令不支持管道来传递参数。 这个时候 xargs 就派上用场了

同时用上 zgrep ,这样gz文件也一起找了

那么,如果我们想从某一种特定格式的文件中(比如csv文件)找特定的内容该怎么做呢?大家应该能触类旁通,举一反三了吧!

Linux xargs grep zgrep命令​

grep只能读一行。

但是:grep可以读取整个文件,这就是创建它的目的。

因此,您不需要创建自己的循环,只需执行以下 *** 作:

grep "apple" fruits.txt

结果将是:

apple 1

apple 2

apple 3

apple 4

作为额外的:假设您将“spineapple666”添加到"fruits.txt文件中,那么您将在输出中看到这个。如果你不想这样:

grep -w "apple" fruits.txt

(-w表示只有整个单词可以是shown.)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/tougao/6052733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存