Linux常用基础命令——grep

前言——

今天很迷茫,不知道写什么,想整理下linux的内容,却发现一个grep够玩好久。。。。我整理得很用心,大家看完肯定大有裨益

欢迎转载,转载请注明来源

grep命令
grep是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。在linux中通过grep命令查找包含某种模式的文件。

grep [选项][模式][文件]

grep命令选项及其意义:
 
-c              #只输出匹配行的数量
 
-i              #搜索时忽略大小写
 
-h              #查询多文件时不显示文件名
 
-l              #只列出符合匹配的文件名,而不列出具体的匹配行
 
-n              #列出所有的匹配行,并显示行号
 
-s              #不显示不存在或无匹配文本的错误信息
 
-v              #显示不包含匹配文本的所有行
 
 

grep命令的模式,可以是字符串,也可以是正则表达式。无论模式是什么,如果模式中包含空格,就需要在模式两边加上双引号,如果没有加双引号的话,空格后的单词容易被误认为是文件名(模式单引号也可以,不过我常用双引号)

新建一个Jane.txt的内容

1.搜索Jane.txt中包含"Cake horse"的行:grep  "Cake horse"  Jane.txt

如果不用引号扩起来的话,会发生什么呢,让我们来看看 :grep  Cake horse  Jane.txt

此时由于Cake和horse之间有空格,所以horse会被认为文件名(这边提一下,如果要查的模式中没有空格,比如我查Cake,可以grep Cake Jane.txt, Cake两边完全可以不加任何符号,但是我还是觉得统一加上双引号比较好,这东西规范点不容易犯错。)

2.grep的多文件查询

此时再新建一个Cheng.txt的文本:

 此时同时查询Jane.txt, Cheng.txt中包含“Cake”的行:grep "Cake"  /root/Jane.txt    /Cheng.txt(要用绝对路径,或者当前所在位置就是文本所在的目录)

3.-选项( -之前要有个空格和grep分离)

-c 选项

表示输出匹配字符串行的数量,grep不加任何选项时会打印出所有的匹配行,加了-c之后就只打印匹配行的数量了,不会再打印每一行的内容了。

-n 选项

输出匹配行的同时,外加显示出所在行号

-v 选项

输出不包含匹配串的所有行

注:这边用了两个选项,-v和-n同时使用。

-i 选项

默认情况下,grep对匹配串中每个字符的大小写都是区分的,如果要不区分大小写,可以加一个-i 选项

(这边为了测试,对Jane.txt的文本进行了一些小修改)

-h 选项

在多文件查询下,grep默认会打印文件名,如果不想显示文件名,可以加一个 -h 选项

-l 选项

在查询时,如果只想列出包含匹配串的文件名,而不打印匹配行,可以用-l 选项。

这边就只显示文件名,而不显示匹配行咯。

-s选项

grep在待搜索的文件不存在时会打印出提示信息,如果觉得提示信息太烦,可以加一个-s选项来不予以打印出来,挺人性化的。

4.grep与正则表达式

grep与正则表达式一起使用时,要用"(单引号)把模式括起来,不能用双引号或者不括起来

1. ‘^help’表示匹配以help开头的行

这是Jane.txt中的文本信息

2.'help$'表示匹配以help结尾的行

这是Jane.txt中的文本信息

 3‘he.p’   .是用来匹配任何一个非换行符的字符。'he.p'可以匹配 'help', 'heap', 不能匹配 'hep', 'hellp'

4.'he*p',表示前面那个字符可以出现0次或者多次

5.[list]匹配字符集的一个字符。'[ha]elp',匹配help或者aelp

6.[n1-n2], 匹配字符范围内的一个字符。‘[a-z]elp’,匹配aelp,belp,celp,.......,zelp

7.[^list],匹配字符集list以外的任意一个字符,'[^chz]elp',表示不能匹配celp,help,zelp

8.'\<h' 匹配以h开头的单词

9.'p\>' 匹配以p结尾的单词

猜你喜欢

转载自blog.csdn.net/CCSGTC/article/details/83047692