grep是一个很常见也很常用的命令,它最重要的功能就是进行字符串数据的对比,然后将符合用户需求的字符串打印出来。
这就是grep的作用,只要是看这篇文章的多少都知道一点,那我抄鸟哥的这句话我就当你懂了。
既然这样那我就再抄一句
需要说明的是grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的!也就是说,假如一个文件内有10行,其中有两行具有你所查找的字符串,则将那两行显示在屏幕上,其他的就丢弃了。
举个栗子
哦对了,附上原始文件
下面开始介绍grep其他的一些参数,毕竟是给自己做笔记,我要写清楚点(呵呵)
--color=auto 将找到的关键字显色
注:如果觉得每次都加--color=auto很麻烦,可以用alias处理一下(alias的功能是设置命令的别名,以简写命令来提高操作效率)。可以在 ~/.bashrc 内加上这行:alias grep='grep --color=auto',再以 source ~/.bashrc 来立即生效即可
-n 显示行号
-A[n] 为after的意思,除了列出匹配行外,后续的n行也列出来
-B[n] 为befer的意思,除了列出匹配行外,前面的n行也列出来
-v 匹配不包含特定字符的行
[] 查找集合字符,跟正则表达式用法相同
如[12]表示包含1或者2,1[23]就表示12或者13
当然也可以[1-3]
[^] 在[]中使用 和-v意思相同,表示不匹配什么
四不四叼叼哒
但是!
以上匹配都是在行进行查找,只要行中匹配就会展示出来,假如我要匹配行头出现过的,怎么办呢?下面介绍一些制表符的用法【微笑的表情】
^ 表示匹配行开头 注意意义不同于[]中的^
匹配MSG开头的数据同样的,有行首就有行尾
$ 表示匹配行尾
匹配ERROR结尾的数据下面介绍俩更牛逼的
. 表示任意字符
啥?没看清?那不是有个. 吗?就是点儿.........
注意,一个点儿表示一个任意字符
牛逼不?* 重复字符
以上文本数据中,有LH001这样的数据,我们匹配这行时,可以直接匹配,也可以用上面的任意字符匹配,但假设我们的目标数据是LH000000001时,或者0的位数不确定时,以上的方式都不能帮助我们准确的匹配到数据,这时候 * 就派上用场了,我们可以用LH0*1来匹配,任意个0
举个栗子
0有点少,大家迁就下好了,接下来有请我们最后一个命令
{} 字符范围
解释一下使用场景,假如我们要匹配2~5个0的连续字符,就是说中间有两个0也行,三个0也行,5个0也行,这个时候就要用到 {} 了
为了便于大家理解,我换了一个匹配文本如下:
嗯,这么简单就够我们用了,然后我们用 {} 匹配ER到1中间有2~5个0的数据
哦对了,因为{}在shell中是有特殊意义的,所有我们需要用到转译字符让他失去意义才行
栗子来了
嗯
那么
笔记做完了,哈哈哈
如果你不小心看到了这里,点个赞吧
不点我自己点
网友评论