正则表达式的特殊符号:
[:alnum:] 代表英文大写字母和数字
[:alpah:] 代表英文大小写字母
[:blank:] 代表空格和TAB
[:cntrl:] 键盘上的控制按键:EG: CR,LF,TAB,DEL
[:digit:] 代表数字
[:graph:] 代表空白符意外的其他
[:lower:] 小写字母
[:print:] 可以被打印出来的任何字符
[:punct:] 代表标点符号
[:upper:] 代表大写字符
[:space:] 任何会产生空白的字符如空格,TAB,CR,etc
[:xdigit:] 代表16进位的数字类型
shell里查找小写字母:
$ grep -n '[[:lower:]]' file_name
蓝色为匹配成功的字符
由于不同语系的编码数据不同,所以造成不同语系的数据选取结果有所不同。因此要特别留意。
======================================================
grep命令
参数说明:
-a 将binary档案以text档案的方式搜寻数据
-c 计算找到‘搜寻字符串’的次数
-i 忽略大小写的不同,所以大小写视为相同
-n 输出行号
-v 反向选择,即显示出没有‘搜寻字符串’内容的那一行
=====================================================
字符组匹配:
[]中包含的任意一个字符(字符串),只能是一个。
字符组支持连字符-表示一个范围。
[^...]排除型字符组,排除后面的字符。
eg:
$ [^a1<] 排除a,1,<外的其他任意一个字符
查找字符“oog”,同时不想要字符前有g:
$ grep -n '[^g]oog' file_name
=====================================================
行首行尾的查找:
'^[A-Z]' 查找行首内容为大写字母的
'[^A-Z]' 查找行首内容非大写字母的所有字符
'char$' 以char字母结尾的行
过滤掉空白行: '^$'
过滤掉注释行: '^#' (以#号开头)
====================================================
. : 小数点表示任意一个字符
* : 星号表示重复前面0个或任意多个字符
eg:
e* 具有0个或多个e
ee* 第一个e必须存在,第二个e可以有0个或任意多个
====================================================
限定连续字符范围:
{}:可限制一个范围区间内的重复字符数,shell中需要用到转义
查找连续的两个o字符:
$ grep -n 'o{2}' file_name 查找连续的两个o字符
{n,m} 找出n到m个前一个字符
{n,} 找出n个以上的前一个字符