1、grep命令介绍

grep命令:是一个Shell命令,是Shell中文本三剑客之一,作用是在文件中提取和匹配符合条件的字符串行

grep命令是一个非常常见的命令,和find命令有很多非常相似的地方,所以在这里先说明。

grep命令格式如下:

[root@localhost ~ ]# grep [选项] “搜索内容” 文件名

选项:
-i:忽略大小写
-n:输出行号(显示原始文件中的行号)
-v:反向查找
--color=auto:搜索出的关键字用颜色显示

举例:

# 输出行号。
[root@localhost ~]# grep -n"123" abc
3:123abc
4:123abcdef123
5:abc 123
6:123aaaaabc
7:123bc
8:123aabc
10:abc123abc # 把你要搜索的内容用红色高亮显示。
[root@localhost ~]# grep --color=auto "123" abc

注意:如果要搜索的内容中没有空格,“搜索内容”部分就可以不加双引号,如果“搜索内容”中有空格,则一定要加双引号。

2、find命令和grep命令的区别(重点)

(1)find命令

find命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,通配符是完全匹配。

提示:find命令可以通过-regex选项,把匹配规则转为正则表达式规则,但是不建议如此。

(2)grep命令

grep命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配。

注意:完全匹配和包含匹配的规则不是find命令和grep命令的区别,是通配符正则表达式的区别。

3、通配符与正则表达式的区别

(1)通配符:

用于匹配文件名,是完全匹配。

下面举例说明:

  • ?:匹配一个任意字符。
  • *:匹配0个或任意多个任意字符,也就是可以匹配任何内容。
  • []:匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c
  • [-]:匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。
  • [\^]:逻辑非,表示匹配不是中括号内的一个字符。例如:[\^0-9]代表匹配一个不是数字的字符。
# 通过通配符查找文件
[root@localhost ~ ] # find . -name "abc*"
./abcd
./abc [root@localhost ~ ]# find . -name "a?c"
./acc
./abc # 其他同理

提示:只要是操作文件名或者目录名的命令都可以是用通配符。如rm命令。

(2)正则表达式:

用于匹配字符串,是包含匹配。

下面简单举例:

  • ?:匹配前一个字符重复0次,或1次(?是扩展正则,需要使用egrep命令。注Shell分为标准正则和扩展正则。)。
  • *:匹配前一个字符重复0次,或任意多次。
  • []:匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c
  • [-]:匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。
  • [\^]:逻辑非,表示匹配不是中括号内的一个字符。例如:[\^0-9]代表匹配一个不是数字的字符。
  • ^:匹配行首(限位符)。
  • $:匹配行尾(限位符)。

其中主要是是?*,在通配符和正则表达式的不同。

关于*注意:

[root@localhost ~ ] # grep "a*" abc

向上面命令中,单写一个字母+*是没有任何意义的。结果会显示文件中所有内容,包括空白行。

因为*是匹配前一个字符重复0次,或任意多次。0次代表什么都没有,也就是没有条件的筛选,所以就显示文件汇总所有的内容。

[root@localhost ~ ] # grep "aa*" abc命令,则表示查找文件中包含有小写字母a的行。和开头无关,正则是含有匹配,包含就会被列出。

如果想要在正则当中去匹配开头的内容,就需要使用限位符。如下:

[root@localhost ~]  # grep "^a" abc
abc
abc 123
abc123abc [root@localhost ~] # grep "^aa*" abc 和上面查询结果也一样。

小练习:

[root@localhost ~]# egrep"aaa?" abc
123aaaaabc
123aabc
# 上面证明是包含匹配 [root@localhost ~j# egrep "3aaa?b"abc
123aabc
[root@localhost ]#
# 如果只想要搜索两个a的字符串,就需要使用限位符,其中的3和b都属于限位符。
# 限位符是包括自己与其他字符串不匹配的任何字符的统称。

『学了就忘』Linux基础命令 — 31、grep命令和通配符的更多相关文章

  1. 『学了就忘』Linux基础 — 17、远程服务器关机及重启时的注意事项

    目录 1.为什么远程服务器不能关机 2.远程服务器重启时需要注意两点 3.不要在服务器访问高峰运行高负载命令 4.远程配置防火墙时不要把自己踢出服务器 5.指定合理的密码规范并定期更新 6.合理分配权 ...

  2. 『学了就忘』Linux基础命令 — 20、文件操作的相关命令

    目录 1.touch 命令 2.stat命令 3.cat命令 4.more命令 5.less命令 6.head命令 7.tail命令 1.touch 命令 touch命令用于创建空文件或修改文件时间, ...

  3. 『学了就忘』Linux基础命令 — 26、帮助命令

    目录 1.man命令 (1)man命令的快捷键 (2)man命令的帮助级别(了解即可) (3)man命令的使用 2.info命令 3.help命令 4.--help选项 1.man命令 man是最常见 ...

  4. 『学了就忘』Linux基础命令 — 27、搜索操作相关命令

    目录 1.whereis命令 2.which命令 3.locate命令 1.whereis命令 whereis是搜索系统命令的命令,也就是说,whereis命令不能搜索普通文件,而只能搜索系统命令. ...

  5. 『学了就忘』Linux基础命令 — 29、关机和重启

    目录 1.sync数据同步 2.shutdown命令 3.reboot命令 4.halt和poweroff命令 5.init命令 1.sync数据同步 sync命令的基本信息如下: 命令名称:sync ...

  6. 『学了就忘』Linux基础命令 — 32、压缩和解压缩相关命令

    目录 1.".zip"格式压缩 2.".gz"格式压缩 3.".bz2"格式压缩 4.".tar"格式打包 5.打包和压 ...

  7. 『学了就忘』Linux基础命令 — 35、网络中与其他机器通信的命令

    目录 1.write命令 2.wall命令 3.mail 命令 使用1:发送邮件 使用2:查看已经接收的邮件 使用3:发送文件内容 1.write命令 (1)write命令的基本信息 命令名称:wri ...

  8. 『学了就忘』Linux基础命令 — 36、查看系统痕迹相关命令

    目录 1.w命令 2.who命令 3.last命令 4.lastlog命令 5.lastb命令 系统中有一些重要的痕迹日志文件,如/var/log/wtmp./var/run/utmp./var/lo ...

  9. 『学了就忘』Linux基础 — 6、VMware虚拟机安装Linux系统(超详细)

    目录 1.打开VMware虚拟机软件 2.选择Linux系统的ISO安装镜像 3.开启虚拟机安装系统 (1)进入Linux系统安装界面 (2)硬件检测 (3)检测光盘 (4)欢迎界面 (5)选择语言 ...

  10. 『学了就忘』Linux基础命令 — 25、文件基本权限的管理

    目录 1.文件和目录的默认权限 2.umask默认权限 (1)查看系统的umask权限 (2)用八进制数值显示umask权限 (3)umask权限的计算方法 (4)注意:umask默认权限的计算绝不是 ...

随机推荐

  1. Windows 10 64位操作系统 下安装、启动测试python pycharm

    一.下载python3.7.7安装包 1:详细下载安装版本可见官网:https://www.python.org/downloads/release/python-373/ 2:百度盘分享连接:htt ...

  2. 模拟一个简单的tomcat

    目录 简单处理 每个请求一个线程 模拟tomcat 参考 简单处理 // 客户端和服务器的通信,说到底就是两个数据的传输, // 客户端发送inputStream给服务器,服务器回复 // outpu ...

  3. MD5加密算法的实现方式

    MD5加密算法 MD5在我们平时项目中运用比较多,尤其是在用户注册的时候,密码存入数据库时可以利用MD5算法加密后存入,可以保证数据的安全性. 代码实现 public final class Md5U ...

  4. Jetbrains CLion 安装与激活 详解

    1. 下载与安装 1.1 下载 这里提供了三个操作系统的官网下载地址 Mac Windows Linux 进入页面后向下拉点击蓝色按钮即可下载. 1.2 安装 这里将用 MacOS 来进行示例,Win ...

  5. NOIP 模拟一 考试总结

    序列 考场上信心满满的打了nlogn的做法,我以为我稳了.据考试结束1h时发现看错题目了,打成了不连续的子序列.匆匆改了n2logn的做法.考试结束后,我发现我跪了.原来到终点才会发现我做的和人家不是 ...

  6. 由于坏块导致DG的mrp0进程中断

    由于坏块导致DG的mrp0进程中断1.Environment11.2.0.4 ADG 2.SymptomsDG的mrp0进程中断,重启后,还是卡住.查看alert,在1.47存在报错,进一步查看trc ...

  7. H5移动端适配方案-rem

    为什么移动端要适配: 由于移动设备的尺寸不一,所以移动端的页面要能够适应不同尺寸的设备,即页面的自适应,让页面在视觉上保持一致. rem:rem 是css3的一种相对单位,参考是根元素HMTL的fon ...

  8. Analysis Tools(分析工具)

    分析工具 1.叠加分析 # Process: 交集取反 arcpy.SymDiff_analysis("", "", 输出要素类, "ALL" ...

  9. 题解 「BZOJ4919 Lydsy1706月赛」大根堆

    题目传送门 题目大意 给出一个 \(n\) 个点的树,每个点有权值,从中选出一些点,使得满足大根堆的性质.(即一个点的祖先节点如果选了那么该点的祖先节点的权值一定需要大于该点权值) 问能选出来的大根堆 ...

  10. 题解 「2017 山东一轮集训 Day5」苹果树

    题目传送门 题目大意 给出一个 \(n\) 个点的图,每个点都有一个权值 \(f_i\) ,如果 \(f_i=-1\) 表示 \(i\) 这个点是坏的.定义一个点是有用的当且仅当它不是坏的,并且它连的 ...