1、-grep程序
Linux下有文本处理三剑客-------grep sed awk’
-grep:文本行过滤工具
-sed :文本行编辑器(流编辑器)
-awk :报告生成器,(作文本输出格式化)
-grep包含三个命令:grep egrep fgrep,他们用来进行 行模式(pattern)匹配的
--egrep= grep -E //使用扩展的正则表达式进行匹配
--fgrep = fast grep //只使用文件通配符进行匹配
*--grep 默认使用正则表达式进行文本匹配*
--grep的用法:grep [option] … PATTERN 文件名
--grep的常见选项:option
-E 支持使用扩展的正则表达式(ERE)regexp
-P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk使用的正则表达式也不相同)
-I 忽略大小写
-v 进行反选
-o 仅仅输出匹配的内容(默认输出的是匹配到的行)
--color=auto 语法着色
-n 显示行号
-w 匹配固定单词
PATTERN—正则表达式
作用:通过一些特殊的字符,来表示一类字符的文件内容,然后交给前面的命令来执行;如果使用特殊字符本身的含义,就需要\进行转义
文件通配符:
*?[] [^]
- 字符匹配
. 代表任意一个字符 ?
[] 匹配范围内的任意一个字符
[^] 范围外任意一个字符
字符类
2. 次数匹配
* 匹配前面的字符,零次到多次
* = ?+ \? :匹配前面的字符零次到一次
\+ 匹配前面的字符一次到多次
\{m\}匹配前面的字符m次
\{m,n\} 匹配前面的字符m到n次
\{m,\}匹配前面的字符至少m次
3. 位置锚钉
^ 锚定行首
$ 锚定行尾
\b 锚定词首和词尾 == \> 锚定词尾 \< 锚定词首
\<root\>锚定单个单词
4.分组
--abc* abcccccccc abc我们看成一个整体
\(\) 实例: \(abc\) abcadascas abccc
**分组特性:默认情况下,Linux系统会为分组指定变量,变量的表示形式\1\2\3….
练习:
- 显示/proc/meminfo文件中大小写S开头的行;
--grep -I “^s” /proc/meminfo
2. 显示/etc/passwd文件中不以/bin/bash结尾的
--grep -v “/bin/bash$” /etc/passwd
3.显示/etc/passwd文件中UID号中最大的用户的用户名
--sort -n -t:-k3 /etc/passwd | tail -1 | cut -d:-f1
4.如果用户root存在,显示其默认的shell程序
--grep “^root\>” /etc/passwd &> /dev/null && grep “^root\>” /etc/passwd | cut -d: -f7
--id root &> /dev/null && grep “^root\>” /etc/passwd | cut -d: -f7
5.找出/etc/passwd中的俩位或者三位数
--grep “[0-9]\{2,3\}” /etc/passwd
-w
\<[0-9]\{2,3\}\>
6.显示/etc/rc.d/rc/sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
--grep “^[[:space:]]\+.* [^[:space:]]$” /etc/rc.d/rc/sysinit
7.找出“netstat -tan” 命令的结果中,以“LISTEN”后跟0,1