文本处理三剑客 grep

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本处理三剑客 grep相关的知识,希望对你有一定的参考价值。

Grep (基于行的过滤)--color=auto 关键字高亮显示

命令选项:
? -v: 显示不被pattern匹配到的行
? -i: 忽略字符大小写
? -n:显示匹配的行号
? -c: 统计匹配的行数
? -o: 仅显示匹配到的字符串
? -q: 静默模式,不输出任何信息
? -A #: after, 后#行
? -B #: before, 前#行
? -C #:context, 前后各#行
? -e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file ? -w:匹配整个单词 ? -E:使用ERE ? -F:相当于fgrep,不支持正则表达式

正则表达式:需加双引号或单引号

文件名通配符当中 * 表示 0或多个任意字符 ? 表示任何一个单一字符

正则当中字符匹配:

.  表示任何字符
[]   匹配指定范围内的任意单个字符
[^]  匹配指定范围外的任意单个字符
[:alnum:] 字母和数字 
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母  [a-z]  
[:upper:] 大写字母  [A-Z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)

[[[
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
[A-Z0-9] 表示大写字母或数字

次数匹配

 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
    * 匹配前面的字符任意次,包括0次
        贪婪模式:尽可能长的匹配
    .* 任意长度的任意字符
    ? 匹配其前面的字符0或1次
    + 匹配其前面的字符至少1次
    {n} 匹配前面的字符n次
    {m,n} 匹配前面的字符至少m次,至多n次
    {,n} 匹配前面的字符至多n次
    {n,} 匹配前面的字符至少n次

位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]$ 空白行
grep -v "^[[:space:]]
$" passwd 去除文件中的空白行
< 或  词首锚定,用于单词模式的左侧
> 或  词尾锚定;用于单词模式的右侧
<PATTERN> 匹配整个单词
Ifconfig 查ipv4地址:
ifconfig |grep "^ens33" -A1 |grep -o inet."[[:digit:]].[[:digit:]].[[:digit:]].[[:digit:]]"

1、 显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
grep -i "^s" /proc/meminfo -i 不区分大小写
grep -e ^s -e ^S /proc/meminfo -e 或
2、 显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v "/bin/bash$" -v 显示不被匹配的行
3、 显示用户rpc默认的shell程序
grep "^<rpc>" /etc/passwd |cut -d: -f7 行首锚定^ <rpc> 匹配整个单词 正则表达式需“”号 然后输入路径 管道符| 最后cut -d:指明分隔符:抽取第7列
4、 找出/etc/passwd中的两位或三位数
-o: 仅显示匹配到的字符串
grep -o "[0-9]{2,3}" /etc/passwd {2,3}表示匹配前面的字符(0-9)至少m次,至多n次
5、 显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面 存非空白字符的行
grep ^"[[:blank:]]+"[[:graph:]] /etc/grub2.cfg
6、 找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结 尾的行
netstat -tan|grep "<LISTEN>[[:blank:]]*"
7、 显示CentOS7上所有系统用户的用户名和UID
grep -v "[[:digit:]]"{4} /etc/passwd|cut -d: -f1,3
8、 添加用户bash、testbash、basher、sh、nologin(其shell为 /sbin/nologin),找出/etc/passwd用户名同shell名的行

9、利用df和grep,取出磁盘各分区利用率,并从大到小排序
df |tr -s " "|cut -d" " -f5,6|sort -r

以上是关于文本处理三剑客 grep的主要内容,如果未能解决你的问题,请参考以下文章

文本处理三剑客之 grep

Linux文本处理三剑客之grep

文本处理三剑客之---grep系

文本处理三剑客之GREP

文本处理三剑客之grep

Linux入门——文本处理三剑客之grep