191145686 发表于 2018-8-30 06:15:02

第三章 shell学习之正则表达式

  正则表达式
  \:精确匹配the,不包括包含the的单词
  [^b-d]:不包含b~d
  a\{2\}:a出现2次
  a\{2,3\}:a出现2~3次
  a\{2,\}:a至少出现2次
  [:upper:]:大写字母(用的时候外面加一层[]表示匹配字符集合)
  [:lower:]:小写字母
  [:digit:]:数字
  [:alnum:]:大小写字母和数字
  [:space:]:表示空格或tab键
  [:alpha:]:大小写字母
  通配
  注意通配和正则表达式不同,虽然有共同的符号
  ls -l *.sh
  匹配出以.sh结尾的文件,而*在正则表达式中表示0个或多个前面的字符
  ls -l 0?.sh
  匹配以0开头,且后面跟一个字符,以.sh结尾的文件,而?在扩展正则表达式中表示0个或1个前面的字符
  []和[^]的用法和正则表达式相同
  grep
  文本搜索工具
  grep [选项] [模式] [文件]
  -c 只输出匹配韩的数量
  -i 忽略大小写
  -l 只列出符合匹配的文件名,不列出具体的匹配行
  -n 列出所有的匹配行,并显示行号
  -s 不显示不存在或无匹配文本的错误信息
  -r 递归搜索,不仅搜索当前工作目录,还搜索子目录
  -q 禁止输出任何结果,以退出状态表示搜索是否成功
  -E 支持扩展的正则表达式
  -F 不支持正则表达式,按照字符串的字面意思进行匹配
  -h 查询多文件时不显示文件名
  -b 打印匹配行距头部的偏移量,以字节为单位,如果与-o结合则为匹配单词距头部的偏移量
  -w 匹配整词,即不把模式的正则表达式元字符解释成特殊含义,如cer*就是cer*
  -x 匹配整行,即如果匹配word*,则这行字能为word*才算匹配
  注意:如果模式有空格则要用引号;文件名可以用通配符(注意不是正则表达式);开头的-也要加\进行转移(以为-选项)

页: [1]
查看完整版本: 第三章 shell学习之正则表达式