如何在Linux中使用正则表达式
非凡云为大家分享如何在Linux中使用正则表达式。
一、grep命令
grep命令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,grep命令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为-,则grep命令会从标准输入设备读取数据。
1.例如在文件file.txt中查找字符串"feifanyun",并打印匹配的行
grep feifanyun file.txt
2.在文件夹test中递归查找所有文件中匹配正则表达式"feifancloud"的行,并打印匹配行所在的文件名和行号
grep -r -n pattern feifancloud/
3.在标准输入中查找字符串"ffy",并只打印匹配的行数
echo “welcome to ffy” | grep -c ffy
二、sed命令
sed命令是利用脚本语言来处理文本文件,sed可依照脚本的指令来处理、编辑文本文件。sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序。
1.只显示ffy.txt文件中的第三行
sed -n ‘3p’ ffy.txt
2.只显示ffy.txt文件中的最后一行
sed -n ‘$p’ ffy.txt
3.显示ffy.txt文件中的第3-第5行
sed -n ‘3,5p’ ffy.txt
4.查找ffy.txt文件中包含we的行
sed -n ‘/we/p’ ffy.txt
5.查找ffy.txt文件中以s开头或者以r结尾的行
sed -n '/q$|^s/p' ffy.txt -r
6.删除ffy.txt文件中第2-4行
sed ‘2,4d’ ffy.txt
7.在ffy.txt文件中第3行下面插入test
sed ‘3a test’ ffy.txt
8.将ffy.txt文件中的:替换成空格
sed 's#:# #g' ffy.txt
三、ack命令
ack命令是一个类似于grep的文本搜索工具,专门为搜索代码而设计。它支持正则表达式和高亮显示匹配的文本。
1.安装方式(centos7)
yum -y install ack
2.例如在ffy.txt中查找包含weq的行(不区分大小写)
ack -i weq ffy.txt 搜索结果会以高亮的形式显示出来。
若需了解更多ack命令的使用方式,可使用man ack查看命令手册。
四、Silver Searcher
ag命令(the silver searcher)是一款用c编写的快速且对开发人员友好的文本搜索工具,针对源代码搜索进行了优化。它与ack类似,但速度更快,可用于搜索代码库。
1.安装方式(centos7)
yum install epel-release
yum install the_silver_searcher
2.例如在/root/ffy.txt中搜索字符串”ffy”
ag ffy /root/ffy.txt
若需了解更多ag命令的使用方式,可使用man ag查看命令手册。
五、ripgrep工具
ripgrep是一款基于Rust语言开发的文本搜索工具,可提供极速是搜索性能,尤其是在处理大型文本文件时,其速度可超越其他同类工具(例如grep、ag)。
1.安装方式(centos7)
sudo curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
cargo install ripgrep
2.例如在当前目录内的文件中搜索字符串”ffy”
rg ffy
若需了解更多rg命令的使用方式,可使用man rg查看命令手册。