1 匹配文本行的grep工具族;
2 改变输入流的stream editor (sed)流编辑器;
3 用于处理字符串的语言:awk,python,perl等;
4 文件查看程序或者分页程序
5 文本编辑器诸如vi,vim,ed等
精确模式的匹配不忽略大小写:
\b表示元字符,代表着单词的开头或者结尾,比如我需要查找一个文本的Nicky,如果不使用精确匹配,那么所有包含Nicky的单词,无论大小写全部会查找出来。怎么办呢?\bNicky\b
如果需要查找Nicky 后面含有coder的单词就可以这样写\bNicky\b.*\bcoder\b;
.也表示元字符,他匹配除了换行符以外的任意字符;
*也表示元字符,表示匹配任意的数量而不是字符;
+元字符,匹配至少一个
?最多一个
\d:元字符表示匹配数字,\w表示匹配字母
如果我要匹配0\d\d-\d\d\d\d\d\d\d\d
0\d{2}-\d{8}
如何测试或正则:
如果你当前在命令行:
cat /etc/passwd | grep sbin
----------------------------------------
\(word\):表示查找到word之后,保存在保留区域(内存中),后续的表达式可以通过转转义序列引用这些匹配的模式,第二个或者…第九个可以通过\1..9的数字来表示匹配几个。举个列子:
\(Nicky\).*\1:匹配两个Nicky之间任意的字符
只显示以a开头的行,比如我现在通过某一个命令或者在文本中,想查找哪些行是以a开头的。
ls -l | grep '^a'
或者 grep '^a'/tmp/Pattern.txt;
从某一个文件或某几个文件中查找某字符串
grep 'Nicky' /tmp/Pattern.txt /tmp/spring/wser.xml
在文本中查找以..开头的行且匹配某表达式:
grep 'travel' a* /tmp/Pattern.txt
cat /tmp/Pattern.txt | grep '^a'
注意cat /tmp/Pattern.txt | grep ‘travel’a*不适合于cat命令。
在posix字符集中,我们还支持
[:alnum:]表示字母数字符,等价于A-Za-z0-9
[:alpha:]匹配字母
[:digit:]匹配数字
[:lower:]匹配写字母
[:upper:]匹配大写字母
我们还需注意:
如果在方括号中[]使用^字符,表示取反而不是以什么开头
[^abc]处理abc三个小写字母之外的任意字符
匹配单词的开始和结束
比如我想查找一个 以Nicky开始和结束的字串:
grep "\<Nicky\>" /tmp/Pattern.txt
比如我想查找一个 以Nicky开始字串:
I’m Nickys.
grep "\<Nicky" /tmp/Pattern.txt