• shell语法 03-linux 通配符和正则表达式


    • Linux的通配符和三剑客(grep、awk、sed)正则表达式是不一样的
    • 通配符是用户命令行bash环境

    Linux 通配符

    符号 功能
    • | 所有字符
      ? | 任意一个字符
      ; | 两个命令的分隔符

    | 配置文件注释

    | | 管道
    | 用户的家目录
    • | 上一次的路径
      $ | 变量前需要加的符号
      / | 路径分隔符号

    | 重定向

    | 追加重定向
    < | 输入重定向
    << | 追加输入重定向
    ' | 单引号,不具有变量置换功能,输出时所见即所得
    " | 双引号,具有变量置换功能,解析变量后输出
    ` | 返引号,中间为命令,会先执行命令,$()
    {} | 中间为命令区块组合或内容序列
    ! | 非
    && | 当前一个指令执行成功时,执行后一个指令
    || | 当前一个指令执行失败时,执行后一个指令
    .. | 上一级目录
    . | 当前目录


    • 为了处理大量的字符串而定义的一套规则和方法
    • Linux正则表达式一般以行为单位处理的
    高亮显示匹配项
    alias grep='grep --color=auto'
    

    正则表达式字符

    元字符 功 能 示 例 示例的匹配对象
    ^ 行首定位符 /^love/ 匹配所有以 love 开头的行
    $ 行尾定位符 /love$/ 匹配所有以 love 结尾的行
    ^$ 表示空行 grep -v '^$' 排除空行
    . 匹配除换行外的单个字符 /l..e/ 匹配包含字符l、后跟两个任意字符、再跟字母e的行
    转义字符
    • | 匹配零个或多个前导字符 | /*love/ | 匹配在零个或多个空格紧跟着模式 love 的行
      [] | 匹配指定字符组内任一字符 | /[Ll]ove//[^L]ove/ | 匹配包含 love 和 Love 的行匹配不包含Love的行
      [^] | 匹配不在指定字符组内任一字符 | /[^A-KM-Z]ove/ | 匹配包含 ove,但 ove 之前的那个字符不在 A 至 K 或 M 至 Z 间的行
      (..) | 保存已匹配的字符 | |    
      & | 保存查找串以便在替换串中引用 | s/love/&/ | 符号&代表查找串。字符串 love将替换前后各加了两个的引用,即 love 变成love**
      < | 词首定位符 | /<love/ | 匹配包含以 love 开头的单词的行
      > | 词尾定位符 | /love>/ | 匹配包含以 love 结尾的单词的行
      x{m} | 连续 m 个 | x /o{5}/ | 分别匹配出现连续 5 个字母 o
      x{m,} | 至少 m 个 x | /o{5,}/ | 分别匹配至少 5 个连续的 o
      x{m,n} | 至少 m 个 x,但不超过 n 个 x | /o{5,10}/ | 分别匹配5~10 个连续的 o 的行

    例子1

    显示sshd配置文件,排除空行和以#号开头的
    
    cat /etc/ssh/sshd_config |grep -v '^$' |grep -v '^#'
    

    例子2

    ls *.jpg |sed -r 's#(^.*)_finished.*#mv & 1.jpg#g' 
    
    ls *.jpg		--列出所有的jpg文件
    (^.*)			--匹配任意字符串开头
    _finished.*	--匹配包含_finished.,并任意字符串结尾
    mv &		    -- &是显示前面匹配到的结果
    1			-- 显示前面括号内匹配到的内容
    
  • 相关阅读:
    OWNER:Java配置文件解决方案 使用简介
    验证数字最简单正则表达式大全
    使用Spring进行统一日志管理 + 统一异常管理
    SpringMVC 拦截器
    Java排序
    tomcat编码配置
    日常任务
    netty入门代码学习
    redis学习
    AutoLayout And Animation
  • 原文地址:https://www.cnblogs.com/liangjingfu/p/9419124.html
Copyright © 2020-2023  润新知