文本处理三剑客之grep

grep命令基本用法

1、grep正则表达式(对文本行进行搜索过滤)

格式:grep [option] PATTERN [FILE...]
option:
        -i:忽略大小写
        -v:取反,显示未被匹配到的pattern
        -n:显示匹配的行号
        -c:统计匹配的行数
        -o: 只显示匹配到的pattern
        -q: 静默,不予显示
        -A#:after,匹配到的行再向后显示#行
        -B#:before,匹配到的行再向前显示#行
        -C#:context,向前向后各显示#行
        -E :等同于egrep(扩展的正则表达式)

2、正则表达式元字符

字符匹配
.:任意单个字符
[]:匹配[]以内的任意单个字符
[^]:匹配[]以外的任意单个字符
[:digit:]:十进制数字
[:upper:]:大写字母
[:lower:]:小写字母
[:space:]:空格
[:alnum:]:字母及数字
[:alpha:]:大小写字母
eg:
[root@Centos6 ~]#grep r..t /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@Centos6 ~]#grep r[a-z]t /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@Centos6 ~]#grep r[^0-9][a-z]t /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
次数匹配
*:前面字符任意次
\?:前面字符0或1次
.*:任意字符任意次
\+:至少一次
\{m,n\}:大于m小于n次
*:前面字符任意次
[root@Centos6 ~]#grep ro*t /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
rtkit:x:499:499:RealtimeKit:/proc:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
\?:前面字符0或1次
[root@Centos6 ~]#grep "ro\?" /etc/passwd
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
.*:任意字符任意次
[root@Centos6 ~]#grep ro.*t /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
\+:至少一次
[root@Centos6 ~]#grep "ro\+" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
rtkit:x:499:499:RealtimeKit:/proc:/sbin/nologin
\{m,n\}:大于m小于n次
[root@Centos6 ~]#grep "ro\{1,5\}" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
setroubleshoot:x:991:988::/var/lib/setroubleshoot:/sbin/nologin
rooooot:x:1001:1001::/home/rooooot:/bin/bash
rooot:x:1002:1002::/home/rooot:/bin/bash
位置锚定
对于行来说
^:行首锚定
$:行尾锚定
^$:空行
^ $:空格
对于词来说
\<,\b:词首锚定
\>,\b:词尾锚定
[root@Centos6 ~]#grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@Centos6 ~]#grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
ymd:x:500:500:ymd:/home/ymd:/bin/bash
[root@Centos6 ~]#grep "\<bin\>" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
ymd:x:500:500:ymd:/home/ymd:/bin/bash
分组
\(\):将一个或多个字符作为一个整体,进行处理。
后向引用:引用前面分组括号中所匹配到的内容
\1,\2 ···
eg:
grep "\(string1\+\(string2\)*\)"
\1:string1\+\(string2\)*
\2:string2

扩展的正则表达式(egrep)

egrep等同于grep -E 其选项及参数大致与grep相同

字符匹配
.:任意单个字符
[]:匹配[]以内的任意单个字符
[^]:匹配[]以外的任意单个字符
次数匹配
*:前面字符任意次
?:前面字符0或1次
.*:任意字符任意次
+:至少一次
{m,n}:大于m小于n次

3、利用所学知识如何在生产环境中实现对磁盘最大使用空间的监控

在实际的生产环境中我们需要实时的查看及监控磁盘空间情况防止因磁盘空间不足导致服务器崩溃
因此我们需要查看磁盘利用率是否超过限制值。
此为利用现在所学的命令完成查看磁盘已使用的空间情况
[root@Centos6 ~]#df -h |grep "^/dev/sda"|tr -s " " | cut -d " " -f5|sort -nr|head -n1
10%

未完待续。。。

原创文章,作者:M25_ymd,如若转载,请注明出处:http://www.178linux.com/81774

(0)
M25_ymdM25_ymd
上一篇 2017-07-18 20:04
下一篇 2017-07-19 20:43

相关推荐

  • 简单救援模式应用

                                  …

    2017-08-12
  • Python函数式编程指南:目录和参考

    目录: 概述 这一篇简要地描述了函数式编程和一些相关的概念。 函数 这一篇展示了关于函数可能不常用到的部分特征并尝试引导诸位使用函数式的思维解决问题,并介绍了诸多有用的内建函数。 迭代器 这一篇介绍了迭代器以及Python对迭代器的语法级的支持,还包括了内置模块itertools的介绍。 生成器 这一篇介绍了自定义的迭代器——生成器,并展示了生成器的用途和使…

    Linux干货 2015-03-11
  • 详解Linux下用户和组的配置文件

    本文将介绍Linux下用户和组的概念及相关配置文件,通过本文,能更好的认识/etc/pssswd ,/etc/group,以及UID、GID的概念,最后将通过修改用户配置文件来实现用户和组的管理工作,对Linux的多任务、多用户有一个更清楚的认识。 一、用户(USER) 在LInux上用户的管理工作是通过修改相关的配置文件来实现的,在日常的工作中主要包含对用…

    Linux干货 2016-10-23
  • 8月3日作业

    文件权限相关的课堂练习: 1)当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?     用户小明不能进入/testdir,不能删除,不能创建。使用ll能看到有哪些文件,但是看不到具体信息 2)当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 不能查看文…

    Linux干货 2016-08-07
  • 马哥教育网络班N22期+第1周课程练习beta2

    马哥教育网络班N22期+第1周课程练习  1.计算机的组成及其功能 1.1 计算机的组成 根据冯·诺依曼体系结构,将计算机分为五个主要的部件: CPU:运算器 CPU:控制器 RAM:存储器 Input:输入设备 Output: 输出设备 其功能分别为: 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处…

    Linux干货 2016-08-15
  • N22+北京+张zhangzhang+第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d" " -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 id `who | cut -d" " -f1 | tail -1` 3、取出当前系统上被用户当作其默认shell的最多的…

    Linux干货 2016-09-05