grep命令在我的日常工作中太强大了
搜索包含A或者B
应用场景:有时候我在搜索的时候,我想要包含A或者包含B的,也有可能会有我想要搜索包含A和B的,都抓出来
下面我创建了四个文件夹
如下图所示,我们可以看到grep -i
的作用,是不区分大小写匹配,通通都抓出来。
下图中使用-E
,搜索出来包含chain_test或者1223的行。
如何搜索,但排除某个文件夹
应用场景来源于,我想搜索在scripts、log文件夹里面的文件文本信息,这些文件夹都在我当前的目录下面,但是,当前目录下面还有一个叫pattern的文件夹,这个文件夹非常大,我想要在搜索的时候排除掉这个叫pattern的文件夹。
也可以排除多个文件,但一定要使用{ }
查找字符串在文本里面出现的次数
参考链接:
1
2
文本内容如下图所示:
可以看到chinal实际上出现了4次,第一行出现3次,第二行出现了1次
grep -o "chinal" ./a.log
如下图所示,
grep -o “china” 会显示出文本中出现的string
如下图所示,将前面显示的结果交给后面wc -l
,即可显示次数
wc为linux的指令,-l
的意思是只显示行数
如下图所示,连续两次使用grep也可以因为第一个grep -o的输出结果会把string都写成每一行的形式。
另外一种方法是运用vim,在vim的内部就进行统计
% 代表的是操作区间,%代表全部文本,,可以使用1,Ls
替代,L代表的是行号,代表的是1行到第L行
s表示的是substitute,表示替换
pattern是要查找的字符串
//替代文本应该放在这里,两个斜杠中间没有任何字符表示没有替代文本
g表示全局,n表示的是匹配match到的次数
如果下面不写g的话,只会匹配每行的第一个