linux文本处理工具2-grep
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文本处理工具2-grep相关的知识,希望对你有一定的参考价值。
grep 文本搜索工具:
grep [options] pattern [file...] -- pattern 模式: 字符串,正则表达式
根据用户指定的"模式"对目标文本逐 行 进行匹配检查;打印匹配到的行。
pattern模式:由正则表达式字符及文本字符所编写的过滤条件。
#===============================
grep 命令选项
--color=auto: 对匹配到的文本着色显示
-v: 显示不被pattern匹配到的行 -- 取反
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串 /显示搜索到的字符串
-q: 静默模式,不输出任何信息-- grep root /etc/passwd &>/dev/null
-A #: after, 后#行 - root 后三行 以root 做参照物
-B #: before, 前#行
小操作: 查看公司运行/占用的IP 地址?
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-- 并且 关系
-w:匹配整个单词
-E:使用ERE -F:相当于fgrep,不支持正则表达式
#=====================================
元字符分类:字符匹配、匹配次数、位置锚定、分组
------------------------------------------------------------------------
基本正则表达式 元字符
1)字符匹配:
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即A-Z, a-z
[:lower:] 小写字母[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:]水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
#===================================
获取6.9 版本 和7.4版本的版本号是多少? 如果版本是17 版怎么办?
#======================================
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* 匹配前面的字符任意次,包括0次 贪婪模式:尽可能长的匹配
.*任意长度的任意字符 --记住: r 开头的 任意字符 任意长度
a* 当成通配符 访问文件名 | "a*" ‘a*‘ 用正则 引起来
小结: grep a* anaconda-ks.cfg 默认当成通配符搜索 为什么呢 a* 和 anaconda-ks.cfg
都是a开头 ,如果 是 b* 别的就会搜索anaconda-ks.cfg 的文本 , 保险起见 ,还是加上
"" ‘‘ 当然 如果用/root/anaconda-ks.cfg 也就无所谓了. | 加上引号吧
\?匹配其前面的字符0或1次 -- 写法可有可无 无线循环 匹配多次
\+匹配其前面的字符至少1次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次 | 匹配多次
\{,n\}匹配前面的字符至多n次 |0-5 0-5.... 多次匹配
\{n,\}匹配前面的字符至少n次
#===============================================
位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或\b词首锚定,用于单词模式的左侧
\> 或\b词尾锚定;用于单词模式的右侧
\<PATTERN\>匹配整个单词
本文出自 “linux-Mylog” 博客,谢绝转载!
以上是关于linux文本处理工具2-grep的主要内容,如果未能解决你的问题,请参考以下文章
Shell文本处理工具(Linux三剑客 grep sed awk )
Linux命令进阶:grep,sed,awk全家桶(文本处理技术详例)