码迷,mamicode.com
首页 > 其他好文 > 详细

文本处理三剑客 grep

时间:2018-06-25 16:56:25      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:文本处理三剑客   出现   meminfo   proc   关系   info   十六进制   制表符   多个   

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 去除文件中的空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<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

标签:文本处理三剑客   出现   meminfo   proc   关系   info   十六进制   制表符   多个   

原文地址:http://blog.51cto.com/13768323/2132474

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!