一,自我介绍
大家好,我是繁星点灯光,欢迎来到我的博客!为了复习与分享知识,来巩固自己的学习,我会在csdn上持续分享自己学习的知识点。希望你们喜欢,也欢迎交流。
二,通配符
通配符适用于简单的文件名匹配和搜索,而正则表达式适用于更复杂的字符串匹配和处理。
命令行通配符
符号 | 含义 |
---|---|
* | 表示匹配任意长度的任意字符 |
? | 表示匹配任意一个字符 |
[ ] | 表示匹配[ ]内的任意单个字符 |
[^ ] | 表示匹配[ ]外的任意单个字符 |
touch file{1…20} 创建二十个文件
ls *1 列出以一结尾的文件(file1, file11)
ls file? 列出以一结尾并且后面只有一个字符的文件 (file1 - file9)
ls file[0-1][2-5] (file12, file13, file14, file15)(不包括file2,file3)
三、正则表达式
grep [-n, -v, -c, -i, -H, -r, -l , -e] ‘关键字’ 文件名
-v: 匹配的行不显示,其他的都显示
-n: 显示匹配的行数
-c: 统计匹配的行数
-i: 忽略大小写
-H: 匹配的行都附带输出文件名
-r: 递归目录,按照关键字,找到能匹配该关键字的文件
注意:此时每次输出都带有文件名,-H可有可无
-l: 只显示匹配关键词的文件名
-e: 依次搜索匹配中,同时匹配多种模式的某一个
-E: 用于启用扩展的正则表达式模式匹配功能。
grep ‘alias’ ~/.bashrc
grep -n ‘alias’ ~/.bashrc
grep -v ‘#’ ~/.bashrc
grep -nr ‘size_t’ /usr/include/linux
正则表达式
符号 | 含义 |
---|---|
\ | 转义字符 |
[xyz] | 匹配所包含的任意一个字符 |
[a-z] | 匹配指定范围内的任意字符 |
[^a-z] | 匹配不在指定范围内的任意字符 |
. | 匹配除\n之外的单个字符 |
^ | 匹配行首 ^/etc |
$ | 匹配行尾 ^conf$ |
x | y |
(pat) | 提高优先级 |
* | 匹配前面的子表达式零次或多次 |
+ | 匹配前面的子表达式一次或多次 |
? | 匹配前面的子表达式零次或一次 |
{n} | 匹配确定的n次 |
{n,} | 至少匹配n次 |
{n,m} | 至少匹配n次且最多匹配m次 |
grep -E ‘(’ data.txt
grep -E ‘a[xyz]b’ data.txt
grep -E ‘[A-Z]’ data.txt (单词只要行有A-Z的字符就行)
grep -E ‘^[0-9]’ data.txt (单词以0-9开头)