03-linux 通配符和正则表达式
Posted 广州富哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 -- 显示前面括号内匹配到的内容
以上是关于03-linux 通配符和正则表达式的主要内容,如果未能解决你的问题,请参考以下文章