文本处理三剑客之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

相关推荐

  • bash通配符和正则表达式元字符部分归纳

    Linux中有各种各样的字符,而且在不同环境和不同命令之下含义也不同 作为新手,决定先归纳学到的符号,方便后面学习厘清它们之间的关系。 glob 简化了的正则表达式 bash默认通配符: ? :只匹配一个任意字符; * :匹配零个或多个任意字符;   [^] :方括号及其中^中的取反 [abc]:匹配任何一个列在方括号中的字符(这个例子要么匹配一个…

    Linux干货 2016-04-11
  • 20160804课堂练习

    grep正则表达式课堂练习 1、找出ifconfig命令结果中本机的所有IPv4地址 # ifconfig | head -2 | cut -dt -f2 | cut -dn -f1 | tail -1 2、  查出分区空间使用率的最大百分比值 # df | cut -c56-58 | sort -n | tail -1 3、  查出用户…

    Linux干货 2016-08-05
  • 8-4 作业

    1.用正则表达式表示IP地址 2.用正则表达式表示手机号11 13 17 15  18 3.用正则表达式表示身份证号18   4.用正则表达式表示邮箱  

    Linux干货 2016-08-08
  • 从Linux小白到大牛——与狼共舞的日子2

    马哥教育网络班21期+第2周课程练习 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cp:copy,复制文件 cp SRC DEST   SRC为文件     如果目录不存在:新建DEST,并将SRC中内容填充至DEST中     如果目…

    Linux干货 2016-07-17
  • Nginx+Apache+Tomcat实现LANMT动静分离

    Nginx+Apache+Tomcat实现LANMT动静分离          目的:    本次实验主要目的为实现以Nginx作为反向代理,并实现分别访问动静态服务的效果。   拓扑结构:     &nbsp…

    Linux干货 2016-12-05
  • first

    计算机可分为硬件(CPU ,存储器 ,输入设备 ,输出设备),软件(操作系统 ) 两大部份; CPU:Central Processing Unit 中央处理器 ,内部由运算器,控制器,寄存器,缓存器组成 ; 存储器 :(RAM:Random Access Memory 随机存储器)进行数据 暂存,断电后其内信息会丢失,如内存 ;(ROM:Read Only…

    Linux干货 2016-12-05