shell 脚本完成对日志文件的提取之grep 学习

来源:互联网 发布:皇室战争皇家巨人数据 编辑:程序博客网 时间:2024/05/22 10:28

前言




正文



grep常用用法

复制代码
[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到 '搜寻字符串' 的次数-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!


根据文件内容递归查找目录

# grep ‘energywise’ *           #在当前目录搜索带'energywise'行的文件# grep -r ‘energywise’ *        #在当前目录及其子目录下搜索'energywise'行的文件
# grep -l -r ‘energywise’ *     #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件

这几个命令很使用,是查找文件的利器。



grep与正规表达式




其实 [] 里面不论有几个字节,他都谨代表某『一个』字节;行首与行尾字节 ^ $.

1.^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!

例子:

找出空白行:

[root@www ~]# grep -n '^$' regular_express.txt

2.小数点具有其他意,所以必须要使用转义字符(\)来加以解除其特殊意义!

3。任意一个字节 . 与重复字节 *

这两个符号在正则表达式的意义如下:

. (小数点):代表『一定有一个任意字节』的意思;* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态



4.限定连续 RE 字符范围 {}


但因为 { 与 } 的符号在 shell 是有特殊意义的,因此, 我们必须要使用字符   \ 来让他失去特殊意义才行。

5.扩展grep(grep -E 或者 egrep):
使用扩展grep的主要好处是增加了额外的正则表达式元字符集。

对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。

6.不使用正则表达式

fgrep 查询速度比grep命令快,但是不够灵活:它只能找固定的文本,而不是规则表达式。



总结

0 0