[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]
今天来看一下shell关于文字过滤的知识,其实最主要的就是正则表达式以及关于文本的一常见的命令。正则表达式:
一种用来描述文本模式的特殊语法。
由普通字符(例如字符a到z)以及特殊字符(称为元字符,如/、*、?等)组成。
基本元字符集及其含义:
字符 |
含义 |
^ |
只匹配行首 |
$ |
只匹配行尾 |
* |
匹配0个或多个单字符 |
[ ] |
只匹配[]内字符,可以是一个单字符,也可以是字符序列,可以使用-表示[]内字符序列范围,如[1-5]代表[12345] |
\ |
只用来屏蔽一个元字符的特殊含义 |
. |
只匹配任意单个字符 |
pattern\{n\} |
只用来匹配前面pattern出现次数,n为次数 |
pattern\{n,\} |
含义同上,但次数最少为n |
Pattern\{n,m\} |
含义同上,但pattern出现次数在n与m 之间 |
部分元字符具体用法:
用\屏蔽一个特殊字符
这里的特殊字符有’’,‘,||,*,+等
\*\.pas
- 正则表达式中匹配以*.pas结尾的所有字符或文件
用[]匹配一个范围或集合
- 逗号将括弧内要匹配的不同字符串分开
- 用 - 表示一个字符串范围,表明字符串范围从 - 左边字符开始,到 - 右边字符结束。
例子:
[0123456789]或[0-9]:假定要匹配任意一个数字。
[a-z]:匹配任意小写字母
[A-Z a-z]:匹配任意大小写字母
[A-Z a-z0-9]:匹配任意字母或数字
[S,s]:匹配大小写s
用\{\}匹配模式结果出现的次数
例子:
A\{2\}B:A出现2次,即AAB
A\{4,\}B:A最少出现4次,AAAAB,AAAAAB,....
A\{\2,4}B:A出现次数2-4次,即AAB,AAAB,AAAAB
一些关于文本处理的命令:
find命令
-命令形式:
Find pathname -option [-print -exec -ok]
- pathname: find命令所查找的目录
- -print: find命令将匹配的文件输出到标准输出
- -exec: find命令对匹配的文件执行该参数所给出的shell命令,相应命令的形式为 ‘command’ {} \; ,注意{}和\;之间的空格
- -ok 和 -exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
- -name: 按照文件名来查找
- -perm: 按照文件权限来查找
- -user: 按照文件所有者来查找文件
- -group: 按照文件所属组来查找文件
- -mtime -n +n: 按照文件的更改时间来查找文件, -n 表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
- -size n[c]: 查找文件长度为n块的文件,带有c时表示文件长度以字节计
- -nogroup: 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
- -nouser: 查找无有效所有者的文件
- -newer file1 !file2:查找更改时间比文件file1新,但是比文件file2旧的文件
- -type:查找某一类型的文件,如:
b: 块设备文件
d: 目录
c: 字符设备文件
p: 管道文件
l: 符号链接文件
f: 普通