正则表达式【TLCL】
grep【global regular expression print】 print lines matching a pattern grep [options] regex [file...] regex 是指一个正则表达式 ? grep选项列表: -i 忽略大小写--ignore-case -v invert match -c 打印匹配的数量,而不是文本行本身--count -l 打印包含匹配项的文件名,而不是文本行本身 --files-with-matches -L 相似于-l 选项,但是只是打印不包含匹配项的文件名--files-without-match -n 打印相应的行号--line-number -h 应用于多文件搜索,不输出文件名--no-filename ?
^ $ . [ ] { } - ? * + ( ) | ? 注意:正如我们所见到的,当 shell 执行展开的时候,许多正则表达式元字符,也是对 shell 有特殊 含义的字符。把元字符用引号引起来至关重要, 这样可以阻止 shell 试图展开它们。
?
[:alnum:] 字符数字字符,在ASCII中等价于[A-Za-z0-9] [:word:] 增加了下划线 [:alpha:] 字母字符 [:blank:] 包含空格和tab [:cntrl:] ASCII的控制码,0-31,127 [:digit:] 0-9 [:graph:] 可视字符,33-126 [:lower:] 小写字母 [:punct:] 标点符号字符 [:print:] 可打印字符,在[:graph:]中的所有字符,再加上空格字符。 [:space:] 在 ASCII 中, 等价于[ trnvf] [:upper:] 大写字母 [:xdigit:] 表示十六进制数字的字符 ? locale命令,查看locale操作。 ?
BRE: 可以识别 ^ $ . [ ] * 字符“(”,“)”,“{”,和 “}”用反斜杠转义后,被看作是元字符 ERE: 添加了 ( ) { } ? + | 在任意元字符之前加上反斜杠会导致其被看作是一个文本字符 ? ?
echo "AAA" | grep -E ‘AAA|BBB|CCC‘ 为了把 alternation 和其它正则表达式元素结合起来,我们可以使用()来分离 alternation。 grep -Eh ‘^(bz|gz|zip)‘ dirlist*.txt ?
? 匹配零个或者一个元素 eg:^(?[0-9][0-9][0-9])?? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$ 通常圆括号都是元字符(在 ERE 中),所以我们在圆括号之前加上了反斜杠,使它们成为文本字符 * 匹配零个或多个元素 [[:upper:]][[:upper:][:lower:] ]*. + 匹配一个或多个元素 ^([[:alpha:]]+ ?)+$ {} 匹配特定个数的元素 {n} n次, {n,m} n到m次, {n,}大于等于n次, {,m}小于等于m次 ?
find . -regex ‘.*[^-_./0-9a-zA-Z].*‘ ? 注意: 当某一行包含的字符串匹配上了一个表达式的时候,grep 命令会打印出这一行 find 命令要求路径名精确地匹配这个正则表达式 ?
locate 程序支持基本的(--regexp 选项)和扩展的(--regex 选项)正则表达式 ?
vim 支持基本的正则表达式 在扩展表达式中,许多被认为是元字符的字符在基本的表达式中被看作是文本字符, 只有用反斜杠把它们转义之后,它们才被看作是元字符。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |