Grep命令可以帮助大家在Linux中快速查找特定字符串或模式。Grep作为一个功能强大的文件模式搜索器,每个Linux发行版都配备了,可以直接使用包管理器来安装。
$ sudo apt install grep [在Debian、Ubuntu 和 Mint上]
$ sudo yum install grep [在RHEL/CentOS/Fedora和Rocky Linux/AlmaLinux上]
$ sudo emerge -a sys-apps/grep [在Gentoo Linux上]
$ sudo apk add grep [在Alpine Linux上]
$ sudo pacman -S grep [在Arch Linux上]
$ sudo zypper install grep [在OpenSUSE上]
假如因为系统升级,需要重新安装Python,但是网络中查询找到的版本较多。需要在系统中查找本来的Python版本,及是否安装了任何模块,只需要运行grep的dpkg命令即可:
dpkg-l|grep-i python
先运行dpkg-1,可以找出系统上已安装的软件包,再将该输出通过管道传输到grep -i python,它只表示“转到 grep 并过滤掉并返回其中带有 ' python ' 的所有内容。”
Linux中查找单个文件或多个文件进行搜索和过滤,比如需要查找/etc/apache2/apache2.conf文件中的内容:
grep -v ^\# /etc/apache2/apache2.conf | grep 。
v选项是告诉grep反转其输出,这意味着不是打印匹配的行,而是执行相反的操作并打印所有与表达式不匹配的行,在本例中是#注释的行。Grep.还支持隐藏空行的输出,在终端可以直接查看更多配置设置。
如果是在Linux中查找全部.mp3文件。想查找艺术家JayZ的所有文件,但不想要任何混音曲目。使用find 命令和几个grep管道即可实现此目的:
# find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”
A和B选项它们显示匹配的行以及搜索字符串之前或之后的行数。A= after和-B= before如:
ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP
grep还支持正则表达式,可以完成更复杂的搜索,如匹配用特定字符开头的行如start:
grep "^start" file.txt
匹配特定字符结尾如end的行:
grep "end$" file.txt
匹配带特定字符的行,如包含数字:
grep "[0-9]" file.txt
匹配不包含数字的行:
grep -v "[0-9]" file.txt
匹配特定模式,如至少两个连续a的行:
grep "a\{2,\}" file.txt