^word 待查找的字符串在行首
word$ 待查找的字符串在行尾
. 一定有一个任意字符的字符
* 重复零个到无穷多个的前一个字符
[list] 从字符集合里找出想要选择的字符
[n1-n2] 字符范围
[^list] 不要的字符或范围
\{n,m\} 连续n到m个前一个RE字符,若为\{n\}则是连续n个的前一个RE字符
若为\{n,\}则是连续n个以上的前一个RE字符
--------------------------------------------------------------------------------------------------------------------------------------
^有两重意思 1.反向字符
2.行首
例如:grep -n '^[^a-zA-Z]' yi.txt ^在[]内表示“反向选择”,在[]外表示定位在行首
$行尾
windows的断行字符(^M$),Linux为($)
查找空白行
grep -n '^$' me.txt
要想空白行和以#开头的都不显示
grep -v '^$' me.txt | grep -v '^#'
--------------------------------------------------------------------------------------------------------------------------------------
以g开头以g结尾
grep -n 'g.*g' me.txt “.*” 代表零个或多个任意字符
当我们需要两个o以上的字符时,就需要ooo* ,因为*代表零个或多个前一个字符
g后面接2到5个o,然后再接一个g的字符串 grep -n 'go\{2,5\}g' me.txt
g后面接2个以上o,然后再接一个g的字符串 grep -n 'go\{2,\}' me.txt
记住:正则表达式的特殊字符与一般在命令行输入命令的“通配符”并不相同
例如,在通配符当中的*代表的是零到无限多个字符,正则表达式中则是重复0到无穷多个的前一个字符的意思