一般来说,选取信息通常是针对一行一行来分析的,并不是整篇信息分析。
grep命令
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。
格式:下面只列出部分options grep [-acdreEhilLnvwq] [-A<显示行数>] [-B<显示列数>] [PATTERN范本样式即正则表达式模式] [文件或目录...]
-a | 将二进制文件以文本文件的方式查找数据 |
-c | 计算找到 [正则表达式模式] 的次数 |
-d <ACTION> | 当指定要查找的是目录而非文件时,必须使用这项参数,后面还需要指定模式ACTION:read, recurse, skip |
-r | 对目录查找,等价于-d recurse 还可以对文件查找,上同 |
-e | 实现多个正则匹配的逻辑or关系,例如: grep -e tobey -e jupy -e tom /etc/passwd查找jupy、tobey、tom字段的行 |
-E | 将样式支持变为扩展正则表达式引擎ERE来使用。grep默认仅支持基础正则表达引擎BRE。等价于egrep命令 |
-F | 等价于fgrep命令,将一切字符视为普通字符 |
-i | 忽略大小写。不会区分大小写字符 |
-h | 应用于多文件搜索,但不输出文件名,--no-filename |
-l | 打印包含匹配项的文件名,而不是模式行本身。仅输出文件名 |
-L | 和-l相反,只打印不包含匹配的文件名 |
-n | 输出相应行号 |
-v | 反向选择,只选择不包含模式项的文本行 |
-w | 对词的搜索,例如bin,不会搜索sbin。--word-regexp |
-q | 不打印匹配结果。如果有匹配的内容则立即返回状态值 0。所以grep -q一般用在shell 脚本中,在 if 判断里面。例如下图所示 |
-A<显示行数> | 后面紧接数字,为after的意思,除了列出模式行外,后续的n行也列出来 |
-B<显示行数> | 后面紧接数字,为before的意思,除了列出模式行外,前面的n行也列出来 |
-C<显示行数> | 后面紧接数字,表示除了列出模式行外,前面的n行和后面的n行也列出来 |
[范本样式即正则表达式模式] | 正则表达式,一般使用引号引起来。当shell执行展开的时候,许多正则表达式元字符,也是对shell有特殊含义。当我们在命令行中传递包含元字符的正则表达式的时候,把元字符用引号引起来至关重要,这样可以阻止shell试图展开他们。 |
grep 和 egrep的区别:grep 的正则表达式是基本正则表达式(BRE),而 egrep 的正则表达式是扩展正则表达式(ERE),这两个正则表达式的区别详见linux正则表达式
grep -E = egrep
grep -F = fgrep
这三者的特点如下:
命令 | 是否支持正则 |
grep | 支持基本正则表达式(BRE) |
egrep | 支持扩展正则表达式(ERE) |
fgrep | 不支持正则表达式,没有元字符没有特殊字符,都是普通字符 |
cut命令
cut将一段信息的某一段给他切出来,处理的信息是以行为单位。
命令语法概要: cut OPTION... [FILE]...
对命令的深层描述,该命令一定要输入明确的字节,字符、片段的选取list信息,否则出现提醒:“cut: you must specify a list of bytes, characters, or fields”