![58019e082269407884786807a81ab34a.png](https://img-blog.csdnimg.cn/img_convert/58019e082269407884786807a81ab34a.png)
Linux 文本操作的三大神器:grep、sed、awk,各自的最佳应用场景:
- grep:使用正则表达式搜索文本,并把匹配的行打印出来,是强大的文本搜索工具;
- sed:用于编辑匹配到的文本,是一种流编辑器;
- awk:能够对文本进行复杂的格式处理,是一种处理文本的语言。
接下来,会依次对这三个命令进行介绍,方便快速上手。
首先是 grep。
1、命令功能
grep 的主要功能是在文件中查找/过滤所需要的内容。
比如查看 ip 地址的命令:
ifconfig | grep inet
![0162970ed5410f3c2c337020baa44d8e.png](https://img-blog.csdnimg.cn/img_convert/0162970ed5410f3c2c337020baa44d8e.png)
2、命令格式
grep [option] pattern file
其中,option 是 grep 命令的参数,pattern 是所需查找/过滤的内容,file 是指定的文件。
3、命令参数
- -A:除了显示匹配 pattern 的那一行外,显示该行之后的内容
- -B:除了显示匹配 pattern 的那一行外,显示该行之前的内容
- -C:除了显示匹配 pattern 的那一行外,显示该行前、后的内容
- -c:统计匹配的行数
- -e:同时匹配多个pattern
- -i:忽略字符的大小写
- -n:显示匹配的行号
- -o:只显示匹配的字符串
- -v:显示没有匹配pattern的那一行,相当于反向匹配
- -w:匹配整个单词
4、grep应用示例
比如有一个hello.txt,内容如下:
![57b5472d537060acc5168ce983e4f8f9.png](https://img-blog.csdnimg.cn/img_convert/57b5472d537060acc5168ce983e4f8f9.png)
通过设定不同命令参数的示例如下:
![e9fa35c7b55ba717b7c307f677727d8c.png](https://img-blog.csdnimg.cn/img_convert/e9fa35c7b55ba717b7c307f677727d8c.png)
同时匹配多个pattern(-e)和忽略大小写(-i)很方便查找:
![f486c0de7c4f690af03315b86750cab3.png](https://img-blog.csdnimg.cn/img_convert/f486c0de7c4f690af03315b86750cab3.png)
显示行号(-n)可以快速定位:
![98af91f6b7c8aa3f29a7a347a61bcb1c.png](https://img-blog.csdnimg.cn/img_convert/98af91f6b7c8aa3f29a7a347a61bcb1c.png)
反向匹配(-v)也经常用到:
![86e885addb78dfd6bf53f0d4b69f7831.png](https://img-blog.csdnimg.cn/img_convert/86e885addb78dfd6bf53f0d4b69f7831.png)
5、常用的正则表达式
常用的正则表达式:
- .:任意单个字符
- *:任意字符多次
- []:指定范围,如[0-9]、[a-z]、[A-Z]、[0-9a-zA-Z]
- ^:行首
- $:行尾
- ^$:空行
比如有一个hello.txt,内容如下:
![c6bcb94a33d9d8c2878b1c051845da54.png](https://img-blog.csdnimg.cn/img_convert/c6bcb94a33d9d8c2878b1c051845da54.png)
使用正则表达式的匹配示例:
![dd82963f4fa69798fb68d97809c0e7f1.png](https://img-blog.csdnimg.cn/img_convert/dd82963f4fa69798fb68d97809c0e7f1.png)