shell-grep中的正则表达式
来源:互联网 发布:淘宝主图视频手机拍摄 编辑:程序博客网 时间:2024/06/05 03:26
介绍
ls /usr/bin | grep zip
这个命令会列出,位于目录 /usr/bin 中,文件名中包含子字符串“zip”的所有文件。
这个 grep 程序以这样的方式来接受选项和参数:
grep [options] regex [file...]
这里的 regx 是指一个正则表达式。
下面是grep的常见options列表:
-i:模式匹配时忽略大小写-V:显示不匹配的行-l:列出匹配模式的文件名称,而不是打印匹配的行-n:列出检索目标所在的行号-c:统计匹配的行总数,不显示行信息
grep 正则表达式示例
在 /etc/passswd 目录中搜索 ‘liuyan’:
grep liuyan /etc/passwd
输出:
liuyan:x:1001:1001:,,,:/home/liuyan:/bin/bash
搜索大小写任意的 liuyan 或 raj:
grep -E -i -w 'liuyan|raj'/etc/passwd
这里加上-E,就是一个扩展的正则表达式的模式。
锚点
你可以分别使用 ^ 和 $ 符号来正则匹配输入行的开始或结尾。
grep ^liuyan /etc/passwd
仅仅只搜索出以单词 liuyan 开始的行,即不显示 liuyangit、liuyang 等:
grep -w ^liuyan /etc/passwd
grep 'foo$' 文件名 #找出以单词foo结尾的行grep '^foo$' 文件名 #匹配仅仅只包含foo的行grep '^$' 文件名 #搜索空行
字符类
grep '[lL]iuyan' 文件名grep -w '[lL]iuyan[0-9]' 文件名grep 'foo[0-9][0-9]' 文件名grep '[A-Za-z]' 文件名grep [wn] 文件名
放在括号内的表达式,即包在 “[[:” 和 “:]]” 之间的字符类的名字,它表示的是属于此类的所有字符列表。标准的字符类名称如下:
[[:alnum:]] - 字母数字字符[[:alpha:]] - 字母字符[[:blank:]] - 空字符: 空格键符 和 制表符[[:digit:]] - 数字: '0 1 2 3 4 5 6 7 8 9'[[:lower:]] - 小写字母: 'a b c d e f g h i j k l m n o p q r s t u v w x y z'[[:space:]] - 空格字符: 制表符、换行符、垂直制表符、换页符、回车符和空格键符[[:upper:]] - 大写字母: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'
grep '[[:upper:]]' 文件名 #匹配所有大写字母
通配符
你可以使用 “.” 来匹配单个字符。
grep '\<b.t\>' 文件名 #匹配以 "b" 开头以 "t" 结尾的3个字符的单词grep '^..$' 文件名 #匹配只有两个字符的所有行grep '^\.[0-9]' 文件名 #匹配以一个点和一个数字开头的行
\< 匹配单词前面的空字符串\> 匹配单词后面的空字符串
egrep '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' 文件名 #匹配通用的IP地址
grep -e '--test--'文件名 #搜索以“-” 符号开头的匹配模式,如果不用-e选项grep 命令会试图把 '--test--' 当作自己的选项参数来解析grep -E 'word1|word2'文件名 #使用 grep 的“或”匹配grep 'word1' 文件名 | grep 'word2' #使用 grep 的“和”匹配
序列检测
egrep "v{2}" 文件名 #匹配字符 “v" 出现两次egrep 'co{1,2}l' 文件名 #匹配 "col" 和 "cool"egrep 'c{3,}'文件名 #匹配至少有三个 'c' 字符的所有行grep "[[:digit:]]\{2\}[-]\?[[:digit:]]\{10\}" 文件名 #匹配 91-1234567890(二个数字-十个数字) 这种格式
总结
字符限定符
. 匹配任意的一个字符- 在[]中表示字符范围[] 代表一定有一个在括号内的字符(非任意字符)[^] 若括号内的第一个字符为指数字符(^),那表示反向选择
数量限定符
? 匹配前面的子表达式,0-1次。* 匹配前面的子表达式,0-N次。+ 匹配前面的子表达式,1-N次。{N} 匹配前面的子表达式 N 次。{N,} 匹配前面的子表达式 N 次到多次。{N,M} 匹配前面的子表达式 N 到 M 次。
位置限定符
^ 匹配行首位置。$ 匹配行尾位置。\b 匹配一个单词前后的空字符串。\B 匹配一个单词中间的空字符串。\< 匹配单词前面的空字符串。\> 匹配单词后面的空字符串。
egrep -c '[[:punct:]]{2,}' -r ./raw_data #查找超过两个标点在一起的行数egrep -c '\.{2,}' -r ./raw_data #查找超过两个.在一起,有多少行grep -o 'n.t' nohup.out |wc -l #个数grep -o ‘objStr1\|objStr2' filename|wc -l #直接用\| 链接起来即可
阅读全文
0 0
- shell-grep中的正则表达式
- Shell中的grep命令与正则表达式
- SHELL [正则表达式][grep][tr]
- grep 命令系列:grep 中的正则表达式
- grep 命令系列:grep 中的正则表达式
- Shell正则表达式 & Grep正则表达式 & shell字符串处理
- Shell正则表达式 & Grep正则表达式 & shell字符串处理
- Shell正则表达式 & Grep正则表达式 & shell字符串处理(转)
- Shell正则表达式 & Grep正则表达式 & shell字符串处理
- Shell文本处理 (3) grep 正则表达式
- Shell编程---grep和awk&正则表达式
- Shell脚本学习-正则表达式&&grep
- shell 正则表达式入门&&grep 正则表达式入门
- Shell中的正则表达式
- Shell 中的 正则表达式
- Shell中的正则表达式
- 在grep ,awk ,sed 中的正则表达式
- linux中的glob、grep、正则表达式
- python 字典
- 2017年最好的JavaScript库
- 浅谈OPC协议-工业控制和自动化领域的接口标准
- 【Java集合源码剖析】LinkedHashmap源码剖析
- 陷阱重重的C++赋值重载函数operator=
- shell-grep中的正则表达式
- linux中安装svn
- ACM刷题之hdu————KazaQ's Socks
- 计网复习2
- 正则表达式系列总结
- Python中的编码与格式转换
- tensorflow1.1/人脸识别Yale数据集
- easyui----DataGrid DetailView(数据表格详细展示)
- RecyclerView 获取显示item的位置