概念
awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。
grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。
1.grep
grep是linux中一种文本搜索工具,他有以下特点:
- 使用正则表达式搜索文本
- 匹配到的文本会显示出来并标红
- 使用权限是所有用户
工作原理
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
egrep = grep -E:扩展的正则表达式 (除了**< , > , \b** 使用其他正则都可以去掉\)
1.1grep的命令格式
grep 命令参数 要查询的文件名
1.2命令参数
- -A<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。
- -B<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
- -C<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
- -c:统计匹配的行数
- -e :实现多个选项间的逻辑or 关系
- -E:扩展的正则表达式
- -f FILE:从FILE获取PATTERN匹配
- -F :相当于fgrep
- -i --ignore-case #忽略字符大小写的差别。
- -n:显示匹配的行号
- -o:仅显示匹配到的字符串
- -q: 静默模式,不输出任何信息
- -s:不显示错误信息。
- -v:显示不被pattern 匹配到的行,相当于[^] 反向匹配
- -w :匹配 整个单词
1.2.1 -A -B -C/-c -o
首先先看我们的文本内容:
我们首先使用A来查询
可见我们的A B C参数的基本命令格式为:
grep A/B/C+要显示的行数+要查询的关键字 要查询文件名
-o 仅显示匹配到的字符串
小写c的作用是返回匹配到的行数
例如:
这里的意思就是test文件中有两行存在a这个字符
1.2.2 -e/-E
-e的作用是实现多个选项间的逻辑or
它的作用实际上就是或(把要求的两种都输出出来)
如果另一个条件是不存在的,那么就只输出满足条件的
-E:扩展的正则表达式
对于正则表达式的部分会在下面描述。
1.2.3 -f FILE
-f FILE:从FILE获取PATTERN匹配
例如:
相当于把其他文件的内容作为标准进行匹配
当然多个匹配也是可以的
1.2.4 -n -i
- -i --ignore-case #忽略字符大小写的差别。
- -n:显示匹配的行号
例如:
这里呢就是忽略大小写,然后输出a/A 再显示出他们的行号
1.2.5 - -q -s -v -w
-q叫静默模式 也就是啥也不输出(无论是存在还是不存在)
-v:显示不被pattern 匹配到的行,相当于[^] 反向匹配
-w :匹配 整个单词(精准匹配)
2.正则表达式
关于正则表达式的基本知识点总结我放在下面这个博客中,这里只写出我们现在需要的部分:
正则表达式: