一、通配符基础知识
功能:用一些特殊的符号,可以实现某些特殊的功能
适用范围:是命令行中的普通命令或脚本程序中
二、通配符分类
(1)模糊匹配
*:匹配所有字符(一个或多个)
?:匹配单个字符(有且只有一个)
[abcd]:匹配任意一个字符。其中abcd可以是不连续的
[a-z]:匹配连续的任意单个字符或数字
!或^:取反,如:[^1-9]不是1至9的单个字符。调用最近使用的符合字符开头的命令
(2)与路径和位置有关的特殊符号
~:家目录
-:上一次的目录
.:当前目录
..:上一级目录
(3)引号相关
':单引号,所见即所得,原样输出单引号里面的内容
":引用字符串,特点是会解析变量、命令
``:反引号,引用命令。希望系统把字符串当作命令就用反引号。等价于$()
用途:比如打包的时候希望包名能够按日志来:tar -zcvf a_$(date).tar.gz ./a.txt
(4)其他字符
;:命令分隔符
#:管理员提示符号,注释符号
$:普通用户提示符,调用变量使用
|:管道符,将前面的数据流交给后面的命令处理
\:转义字符,让字符还原本义
{}:生成序列、引用变量让变量成为一个整体
&&:并且
||:或者
(5)重定向
三、正则表达式
1、基础知识
(1)概念
what:表达式:是为处理大量的字符串及文本而定义的一套规则和方法
why:提高效率,快速获取到想要的内容
where:适用于这三个命令:grep(egrep)、sed、awk。(注意:正则是以行为单位,一次处理一行)
how:
(2)正则的特点
1)为处理大量文本及字符串而定义的一套规则和方法
2)其工作时以行为单位进行,即一次处理一行
3)通过正则表达式可以将复杂的处理任务化繁为简,提供操作Linux的效率
4)仅被三剑客命令(grep、egrep、sed、awk)支持,其他命令无法使用
2、正则表达式的分类
(1)基本正则表达式(和命令grep使用)
1)^:尖角号,以什么开头。如:^oldboy,以oldboy开头的行
2)$:以什么结尾。如oldboy$,以oldboy结尾的行
筛选所有的目录:ls -hl|grep "^d" ./
ls -hl|grep "/$" ./
3)^$:筛选空行,即筛选没有内容的那一行
4).:匹配任意一个且只有一个字符,类似于通配符的?
5)\:转义字符
6)*:重复前面字符0次或者多次
.*:所有的,包含空行也会显示出来
7)^.*:组合符,匹配以任意0个或多个字符开头的行
.*$:以任意0个或多个字符结尾的行
8)[abc]:匹配集合内的任意一个字符a或b或c
[^abc]:匹配不包含集合内的任意字符的行
(2)扩展正则表达式(和egrep命令使用)
1)+:匹配前一个字符1次或1次以上