10-正则表达式-grep
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10-正则表达式-grep相关的知识,希望对你有一定的参考价值。
10-正则表达式-grep
作业一:正则表达式
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的
-
正则表达式分类
- 基本正则表达式
- 扩展的正则表达式
- Perl正则表达式
-
基本组成部分
grep命令
-
选项
-a 不要忽略二进制数据。 -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。 -c 计算符合范本样式的列数。 -C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。 -e<范本样式> 指定字符串作为查找文件内容的范本样式。 -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 -F 将范本样式视为固定字符串的列表。 -G 将范本样式视为普通的表示法来使用。 -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 -H 在显示符合范本样式的那一列之前,标示该列的文件名称。 -i 忽略字符大小写的差别。 -l 列出文件内容符合指定的范本样式的文件名称。 -L 列出文件内容不符合指定的范本样式的文件名称。 -n 在显示符合范本样式的那一列之前,标示出该列的编号。 -q 不显示任何信息。 -R/-r 此参数的效果和指定“-d recurse”参数相同。 -s 不显示错误信息。 -v 反转查找。 -w 只显示全字符合的列。 -x 只显示全列符合的列。 -y 此参数效果跟“-i”相同。 -o 只输出文件中匹配到的部分。
-
grep命令常见用法
文件中查找一个单词:grep match_pattern file_name grep "match_pattern" file_name
多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
输出除之外的所有行 -v 选项:
grep -v "match_pattern" file_name
使用正则表达式 -E 选项:
grep -E "[1-9]+" egrep "[1-9]+"
只输出文件中匹配到的部分 -o 选项:
echo this is a test line. | grep -o -E "[a-z]+\." line. echo this is a test line. | egrep -o "[a-z]+\." line.
统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c "text" file_name
在多级目录中对文本进行递归搜索:
grep "text" . -r -n
选项 -e 制动多个匹配样式:
echo this is a text line | grep -e "is" -e "line" -o is line
作业二:grep作业
-
显示出所有含有root的行:
cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash
-
输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:
[[email protected] ~]# grep -C ‘2‘ bash /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -- chrony:x:996:994::/var/lib/chrony:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin ads247admin:x:1000:1000::/home/ads247admin:/bin/bash cx2c:x:1001:1001::/home/cx2c:/bin/bash
-
显示出有多少行含有nologin。
[[email protected] ~]# grep -c ‘nologin‘ /etc/passwd 22
-
显示出那些行含有root,并将行号一块输出。
[[email protected] ~]# grep -n ‘root‘ /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
-
显示出文件中
-
新建用户 abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来[[email protected] ~]# adduser abominable [[email protected] ~]# adduser abominate [[email protected] ~]# adduser anomie [[email protected] ~]# adduser atomize [[email protected] ~]# egrep ‘^a[a-z]omi[a-z]*‘ /etc/passwd abominable:x:1002:1002::/home/abominable:/bin/bash abominate:x:1003:1003::/home/abominate:/bin/bash anomie:x:1004:1004::/home/anomie:/bin/bash atomize:x:1005:1005::/home/atomize:/bin/bash
-
建四个用户 Alex213sb
Wpq2222b
yH438PIG
egon666 egon 过滤出用户名组成是字母+数字+字母的行[[email protected] ~]# adduser Alex213sb [[email protected] ~]# adduser Wpq2222b [[email protected] ~]# adduser yH438PIG [[email protected] ~]# adduser egon666egon [[email protected] ~]# egrep ‘([a-Z]+)([0-9]+)([a-Z]+)‘ /etc/passwd ads247admin:x:1000:1000::/home/ads247admin:/bin/bash cx2c:x:1001:1001::/home/cx2c:/bin/bash Alex213sb:x:1006:1006::/home/Alex213sb:/bin/bash Wpq2222b:x:1007:1007::/home/Wpq2222b:/bin/bash yH438PIG:x:1008:1008::/home/yH438PIG:/bin/bash egon666egon:x:1009:1009::/home/egon666egon:/bin/bash
-
显示出/etc目录下所有包含root的文件名
grep -rl[[email protected] ~]# grep -rln "root" /etc/ /etc/pki/ca-trust/ca-legacy.conf /etc/pki/ca-trust/extracted/README /etc/pki/ca-trust/extracted/java/README /etc/pki/ca-trust/extracted/java/cacerts /etc/pki/ca-trust/extracted/openssl/README /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt /etc/pki/ca-trust/extracted/pem/README /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem ...
-
过滤掉/etc/ssh/sshd_config内所有注释和所有空行
egrep -v "^$|^#" /etc/ssh/sshd_config | sed ‘s/#.*.//g‘
作业三:
-
Linux下源码安装Python并设置PATH
// readline-devel python shell里 方向键可用 // 机器默认是2.7,安装完之后需要把python命令链接到3.6 yum -y install zlib zlib-devel gcc readline-devel wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz xz -d Python-3.6.1.tar.xz tar -xvf Python-3.6.1.tar cd Python-3.6.1/ ./configure make all make install rm /bin/python ln -s /usr/local/bin/python3.6 /bin/python //设置默认python3.6为默认python
-
windows下安装python,并设置PATH
选做题:
- 一键是部署nginx、nfs
- 编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件
- 编写计划任务,定时运行监控脚本,完成监控操作
以上是关于10-正则表达式-grep的主要内容,如果未能解决你的问题,请参考以下文章