shell的正则表达式

简介

  1. 正则表达式用于描述字符排列和匹配模式的一种语法规则。—-用来筛选数据
  2. 正则表达式与通配符的区别 1.正则表达式–匹配“文件”符合条件的字符串–>>包含匹配 2.通配符—–匹配符合条件的“文件”名——–>>完全匹配 3.为什么存在,通配符、正则表达式?
    • ls、find、cp(操作文件的一些命令)不支持正则表达式,只能用通配符。
    • grep、awk、sed(操作字符串的一些命令)支持正则表达式。
    • 为什么所有的不都支持正则表达式?
  3. 正则表达式
    1. 基础正则
作用
* 前一个字符匹配0 次或任意多次
. 前一个字符匹配0 次或任意多次
^ 匹配行首,例:^he 匹配以 he 开头的行
$ 匹配行尾,例:he$匹配以 he 为结尾的字符串
[ ] 匹配括号中指定的任意一个字符,只匹配一个 例:[a-z]匹配 a-z 中的任意一个字符,[0-9][a-z]表示“连续匹配”
[^] 匹配除中括号字符外任意一个字符,例:^[0-9]匹配任意一位非数字的字符
\ 转义符,取消特殊字符的含义
\ { n\ } 表示前面字符恰好出现 n 次
\ { n,\ } 表示前面字符出现不小于n 次
\ {n,m\ } 表示其前面字符至少出现 n 次
  1. 扩展正则

正则表达式(基础正则)

“ * “

  1. *“星号——–不同于通配符中的匹配所有内容。
    • 前一个字符匹配0 次,或者任意多次。
      • a* - - 匹配所有内容,包括空白行
      • aa* - - 匹配至少包含有一个 a 的行。
      • aaa* - -匹配至少包含两个连续的 a 的字符串。

“ . “

  1. .“——–和通配符中”?”类似。
    • 匹配除了换行符外任意字符
      • s..d - - 匹配之间两个字符的单词。
      • s.*d - - 匹配之间的任意字符。
      • .* - - 匹配所有内容。

“ ^ “、” $ “、” [] “、” [ ^ ] “

  1. ^“、”$“、”[]“、”[^]
    • ^ - - 匹配行首。
    • $ - - 匹配行尾。
    • [] - - 匹配括号中指定字符串中的任意字符,只匹配一个
    • [^] - - 匹配除中括号的字符以外的任意一个字符。

{n\ }、{n,\ }、{n,m\ }

  1. \{n\}”、”\{n,\}“、”\{n,m\}
    • \{n\} - - 例:a\{3\} 匹配 a 字母连续出现三次的字符串(连续四次以上也会被匹配到,所以在该匹配首尾加定界符能精确匹配到)
    • \{n,\} - - 例:\{n,\} 前面字符出现不少于 n 次
    • \{n,m\} - - 例:sa\{1,3}i 匹配在字母 s 和字母 i 之间最少一个 a,最多三个 a
文章作者: lmislm
文章链接: http://blog.booml.cn/2017/07/20/shell正则表达式/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Baskerville*