三、正则表达式
正则表达式通常被用来检索、替换那些符合某个模式的文本或字符串,Linux 中,grep, sed,awk 等文本处理工具都支持通过正则表达式进行模式匹配
特殊字符 | 含义 |
---|---|
^ | 指定以什么开头 |
$ | 指定以什么结尾 |
^$ | 指定所有的空行 |
. | 一个点代表匹配一个任意字符,多个点代表匹配多个 |
* | 表示某个字符出现任意次,一般不单独使用,而是同上一个字符连着使用 |
.* | 表示任意字符出现任意次 |
[ ] | 表示匹配某个范围内的一个字符 |
[6,8] | 匹配6或者8 |
[68] | 表示意思同上,逗号可以舍去 |
[0-9] | 匹配一个0-9的数字 |
[0-9]* | 匹配任意长度的数字字符串 |
[a-z] | 匹配一个任意字母字符 |
[a-z]* | 匹配任意长度的字母字符 |
[a-c,e-f] | 匹配a-c或者e-f之间的任意字符 |
#显示文件中所有的空行,同行号一起显示
cat daliy_archive.sh | -n grep ^$
#在cat /etc/passwd的结果中筛选以a开头,in结尾,中间可以有任何其他内容的数据
cat /etc/passwd | grep ^a.*in$
#在cat /etc/passwd的结果中筛选以a开头,in结尾,中间包含var并且可以有任何其他内容的数据
cat /etc/passwd | grep ^a.*var.*in$
#匹配一个手机号
#grep默认不支持扩展的正则表达式如{},需要-E
#{9}代表前面的[0-9]会出现9次
echo "15912345678" | grep -E ^1[34578][0-9]{9}
# %s 全文检索
# g 替换
# # 间隔符
%s#1-20\.ofd#info\.json#g