Bash的通配符:
1. ? 匹配单个字符,ls -l aa?b.txt
2. * 匹配任意个字符 ls -l aa*b.txt
3. [] 匹配中括号中的任意一个字符 ls -l aa[trh]b.txt, ls -l aa[a-d]b.txt
4. {} 一组表达式,用逗号,隔开,只要满足其中一条即可 ls -l ls{[ro]*a,[s-v]}*a
5. ^ 在[]中使用,表示不等于这里面内容的,注意:是完全匹配,跟正则表达式不一样 ls -l [^myconfig]*.txt
6. GOLBIGNORE 内部变量GLOBIGNORE保存了通配时所忽略的文件名集合
grep 命令:
基本用法:grep [选项] [模式] [文件...]
grep命令由选项、模式、文件三部分组成,它在一个或多个文件中搜索满足模式的文本行,模板后的所有字符串被看成文件名,文件名可以多个,搜索结果被打印到标准输出,不影响原文件内容。
grep命令的选项:
-c 只输出匹配行的数量
-i 搜索时忽略大小写
-h 查询多文件时不显示文件名
-l 只列出复合匹配的文件名,不列出具体匹配行
-n 列出所有匹配行,并且显示行号
-s 不显示不匹配或无匹配的错误信息
-v 反向匹配,显示所有不匹配的行
-w 匹配整词,并且以模式的字面含义去解析它,而不去解析正则式的元字符
-x 匹配整行,并且也是跟-w一样以字面含义去解析
-r 递归搜索,不仅搜索当前工作目录,而且搜索子目录
-q 禁止输出任何结果,以退出状态值表示搜索是否成功
-b 打印匹配行距离文件头部偏移量,以字节为单位
-o 与-b结合使用,打印匹配的词距离文件头部的偏移量,以字节为单位
-E 支持扩展的正则表达式
-F 不支持正则表达式,按照字符串的字面意思搜索
POSIX字符类:
为了保持不同国家的字符编码一致性,POSIX Portable Operating System Interface增加了特殊的字符类,以[:classname:]的格式给出,grep命令支持POSIX字符类,下面是POSIX类及其意义:
[:upper:] 表示大写字母[A-Z]
[:lower:] 表示小写字母[a-z]
[:digit:] 表示阿拉伯数字[0-9]
[:alnum:] 表示大小写和阿拉伯数字[a-zA-Z0-9]
[:space:] 表示空格或者TAB键
[:alpha:] 表示大小写字母[a-zA-Z]
[:cntrl:] 表示Ctrl键
[:graph:]或[:print:] 表示ASCII码33~126之间的字符
[:xdigit:] 表示16进制数字[0-9A-Fa-f]
下面举几个例子:
# 利用POSIX字符类搜索以大写字母开头的行
# grep '^[[:upper:]]' test.txt
精确匹配: \<test\> 其实效果跟 grep -w test 是一样的,匹配整个单词test
联系客服