一、基础正则表达式
1、正则表达式与通配符
-
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式
-
通配符用来匹配符合条件的文件名,通配符是完全匹配(必须一摸一样才显示。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配
-
基础正则表达式
元字符 | 作用 |
---|---|
* | 前一个字符匹配0次或任意多次 |
. | 匹配除了换行符外任意一个字符 |
^ | 匹配行首(以xxx开头的行 |
$ | 匹配行尾 |
[] | 匹配中括号中指定的任意一个字符,只匹配一个字符 |
[^] | 匹配除中括号的字符以外的任意一个字符。 |
\ | 转义符。用于取消将特殊符号的含义取消 |
{n} | 表示其前面的字符恰好出现n次 |
{n,} | 表示其前面的字符出现不小于n次 |
{n,m} | 表示其前面的字符至少出现n次,最多出现m次 |
- 例子,grep “a” test.txt 匹配所有内容,包括空白行。grep “aa” test.txt,匹配至少包含一个a的行
- .例子,grep “s…d” test.txt 匹配s和d间有两个字符的单词,grep “s.d” test.txt 匹配s和d字母之间有任意字符 。grep “.” test.txt 匹配所有内容
- ^$例子
grep “^M” test.txt
匹配以M开头的行。grep “n$” test.txt
匹配以n结尾的行grep -n “^$” test.txt
匹配空白行。
- []例子
- [aoeiu]匹配任意一个元音字母
- [0-9]匹配任意一位数字
- [a-z][0-9]匹配小写字和一位数字构成的两位字符
[^]
例子[^0-9]
匹配任意一个非数字字符[^a-z]
匹配任意一位非小写字母^[^a-zA-Z]
匹配不用字母开头的行
- \例子
grep “\.$” test.txt
匹配使用.结尾的行,因为.在正则中是有含义的,所以有\使得.失去含义
- {n}例子,[0-9]{\4} 匹配4位数字,[1][3-8][0-9]{9}匹配手机号码
- {n,}例子,[0-9]{2,}匹配两位及以上的数字
- {n,m}例子,[a-z]{6,8}匹配6到8位的小写字母
二、字符截取命令
1、cut命令
- 命令语法:
cut [选项] 文件名
- cut命令的局限:不能处理带空格的内容&#x