-
通配符
-
正则表达式
通配符:
linux命令中通配符通常用在路径中文件名的匹配上
符号 内容
* 0个或多个字符(相当于正则表达式中.*)
? 匹配任意一个字符
[ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个
[-] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字
[^ ] 若中括号内第一个字符为符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,要是非 a, b, c 的其他字符就行。
[:space:] 空白字符
[:punct:] 标点符号
[:lower:] 小写字母
[:upper:] 大写字母
[:alpha:] 大小写字母
[:digit:] 数字
[:alnum:]: 数字和大小写字母
除了这些通配符之外,shell环境中还有一些特殊的符号
符号 内容
# 批注符号:这个最常被使用在 script 当中,规为说明!
\ 转义符号:将『特殊字符或通配符』还原成一般字符
| 管道 (pipe):分个两个管道命令的界定;
; 连续指令下达分隔符: (注意!与管道命令不相同)
~ 用户家目录
$ 取用变量前导符:亦即是取用变量前需要加的变量取代值
& 工作控制 (job control):将指令变成成背景下工作
! 逻辑运算意义上的『非』 not 癿意思!
/ 目录符号:路径分隔的符号
>, >> 数据流重导向:输出导向,分删是『叏代』不『累加』
<, << 数据流重导向:输入导向 (这两个留待下节介绍)
' ' 单引号不具有变量置换的功能
" " 具有发量置换的功能!
` ` 两个『 ` 』中间为可以执行的指令,亦可使用 $( )
( ) 在中间为子 shell 的起始不结束
{ } 在中间为命令区块的组合!
正则表达式
linux命令中正则表达式通常用在文件内容的匹配上
linux文本处理三剑客:
grep:文本过滤(pattern:模式)工具,用来将文件内容中匹配的行过滤出来(cut过滤列) grep,egrep,fgrep不支持正 则表达式搜索
sed:stream editor,文本编辑工具
awk:linux上的实现gawk,文档报告生成器
例:
空行:" ^$" 包含空格的无字符行:"^[[:blank:]]$"
分组:例
(注:当给括号中的第一个加锚定时, 后面的\1 匹配的是第一个括号里的内容,锚定效果并不能生效)
[abc.] 括号中的. 不会当做特殊符号,只是表示 .这个字符,不需要转义