Shell四剑客Grep

Grep

查找某个文件中关键词&过滤文本文件中某个字符
格式:
grep -option(参数) word(字符) file(文件)
常用参数:
-a:以文本文件方式搜索(默认)
-c: 统计匹配内容 在文件中出现的次数(一共多少条符合)
-E:使用egrep扩展模式匹配(正则)
-n:输出结果所在文件中的行号
-v:反向选择,即显示不包含匹配文本的所有行
-w: 精准匹配

-o 打印匹配词
-i: 忽略大小写
-A : (after) 匹配之后行
-B:(before)匹配之前行
-C: (context)匹配掐和后的行

例子:输出ifconfig显示的ip地址所在行


image.png

通配符

*:0个或多个数字,字符
?: 匹配任意一个字符
#:表示注解
[ ] :内容范围匹配括号中的内容
{}: 命令块,多个命令匹配


正则

* 前一个字符匹配 0 次或多次;
. 匹配除了换行符以外任意一个字符;
.* 代表任意字符;
^ 匹配行首,即以某个字符开头;
$ 匹配行尾,即以某个字符结尾;
(..) 标记匹配字符;
[ ] 匹配中括号里的任意指定字符,但只匹配一个字符;
[^ ] 匹配除中括号以外的任意一个字符;
\ 转义符,取消特殊含义;
< 锚定单词的开始;
> 锚定单词的结束;
{n} 匹配字符出现 n 次;
{n,} 匹配字符出现大于等于 n 次;
{n,m} 匹配字符至少出现 n 次,最多出现 m 次;
\w 匹配文字和数字字符;
\W \w 的反置形式,匹配一个或多个非单词字符;
\b 单词锁定符;
\s 匹配任何空白字符;
\d 匹配一个数字字符,等价于[0-9]。


例1:找出3位数字和6位数字的内容([0-9]表示匹配1位数字,写3个是匹配3个,多位的话可用[0-9]{3}表示出现3次,都是一个意思。grep不识别{},需要加-E)

image.png

2

匹配ip地址(grep -E "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$" tongpei.txt )[0-9]匹配单个数字,{1,3}出现1--3次,^开头,$结束
也可这么写(cat host.txt|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"--把表达式括起来,后面用通配{3}表示出现三次更简洁。

筛选IP,并排除255开头和结尾cat host.txt|grep -E "([0-9]{1,3}.){3}[0-9]{1,3}"|grep -v "^255"|grep -v "255$"


image.png

ifocnfig命令查看ip 过滤网卡IP地址排除127.0.0.1和255

ifconfig|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|grep -v "255"|grep -v "127"

3.查找除了1的字符([^]表示匹配括号意外的任意字符)


image.png

4.查找带有ad 字符的(正则[ ]匹配的是括号中的一个字符,而不是整个完整的字符!a[dc]表示ad 或者ac)


image.png

5.补充:sort,uniq (排序,去重)

6.过滤出nginx配置文件中生效的行
grep -vE '^$|#' nginx.conf (去除空行和#号的)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容