今天看了鸟哥的linux私房菜。关于正則表達式:简单做笔记例如以下:
[:upper:] 大写字母 A-Z
[:lower:] 小写字母 a-z
[:digit:] 数字 0-9
[:alpha:] 字母 A-Z a-z
[:alnum:] 字母和数字 A-Z a-z 0-9
首先介绍几个字符:
^ 表示行首 (^在方括号[ ]内表示不包括。在[ ]外表示行首!
!
!)
$ 表示行尾
[] 不管括号内有几个字符,仅仅能代表 “当中一个”!!
。
{ } 表示字符出现的次数,因为花括号本身在shell有意义,因此使用时需加上转义字符。
grep :
-n 列出行号
-v 反选(即打印出不包括后面字符的行)
-i ignore 大写和小写。即对大写和小写不敏感
以下的几个样例一下就明确了: (以正則表達式与grep使用为例,当然了。仅仅要支持正則表達式,以下的命令式通用的)
grep -n 'the' a.txt //在a.txt中寻找包括the的行。
grep -vn 'the' a.txt //在a.txt中寻找不包括the的行
grep -in 'the' a.txt //在a.txt中寻找 'The','THE' 等字符。大写和小写不敏感。
grep -n 't[ab]ll' a.txt //在a.txt中寻找'tall' 或者是'tbll'.
grep -n '[^b]ee' a.txt //在a.txt中寻找'ee'。可是要求'ee'之前不能是b
grep -n '[^A-Z]ee' a.txt //在a.txt中寻找'ee'。可是要求'ee'之前不能是大写字母
等价于 grep -n '[^[:upper:]]ee' a.txt
grep -n '^A' a.txt //在a.txt中寻找以 A 开头的行
grep -n 'B$' a.txt //在a.txt中寻找以 B 结尾的行
grep -n '^[A-Z]' a.txt //在a.txt中寻找以 大写字母 开头的行
grep -n '^$' a.txt //在a.txt中寻找空行
grep -vn '^$' a.txt | grep -nv '^$' //在a.txt中寻找 既不是空行 也不以 # 开头的行
. 表示绝对有一个随意字符
* 表示反复前一个字符0到正无穷次
grep -n 'g..d' a.txt //在a.txt中寻找g与d之间隔两个字符的行
grep -n 'ooo*' a.txt //在a.txt中寻找至少包括两个 oo 的行
grep -n 'goo*g' a.txt //在a.txt中寻找g与g之间至少包括一个o的行
grep -n 'g.*g' a.txt //在a.txt中寻找以g开头与结尾。中间为随意字符的行 //注意此处不能是 g*g!
!
!
{} 用于表示连续几个字符 ,比方2-5个o
grep -n 'o{2,5}' a.txt