博客
关于我
linux grep命令详解
阅读量:809 次
发布时间:2023-02-01

本文共 1884 字,大约阅读时间需要 6 分钟。

Grep命令入门与实践指南

grep(全局搜索正则表达式并打印行)是Linux系统中一个强大的文本处理工具。它能够使用正则表达式搜索文件中的文本,并根据设置输出匹配结果。本文将从基础到高级功能详细介绍grep命令的使用方法。

Grep的基本用法

grep的核心功能是搜索文件中的文本,并根据正则表达式进行匹配。其基本语法格式为:

grep [选项] [正则表达式] [文件或管道]

常用选项包括:

  • -a:将二进制文件转换为文本文件进行搜索。
  • -c:统计匹配行的数量。
  • -i:忽略大小写差异。
  • -n:输出匹配行的行号。
  • -v:反向选择,显示不含匹配项的行。
  • --color=auto:将关键字部分用颜色显示。

实例:从/etc/passwd中查找包含“root”行

要查找/etc/passwd文件中“root”用户的行,可以使用以下命令:

grep root /etc/passwd

输出结果可能包括:

root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

为了显示匹配行的行号,可以添加-n选项:

grep -n root /etc/passwd

输出结果:

1:root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

Grep的高级功能

grep支持多种高级选项,能够满足更复杂的搜索需求。

行号显示与颜色显示

为了便于定位,grep支持显示匹配行的行号。同时,使用--color=auto选项可以让关键字部分以颜色显示。例如:

grep -n --color=auto root /etc/passwd

逆向选择

-v选项可以用于反向选择,显示不含匹配项的行:

grep -v root /etc/passwd

扩展grep(egrep)

egrep(扩展grep)支持更多的正则表达式元字符。使用-E选项可以启用egrep功能:

egrep 'NW|EA' testfile

正则表达式高级功能

正则表达式是grep的灵魂。以下是常用的表达式元字符:

字符类

  • [a-z]:匹配任意一个小写字母。
  • [^a-z]:匹配不在小写字母中的任意字符。
  • [0-9]:匹配数字。

行首与行尾

  • ^:匹配行首。
  • $:匹配行尾。
  • [^a-zA-Z]:不以字母开头。

任意字符

  • .:匹配任意一个字节。
  • *:重复前一个字符0到无穷次。

限定范围

  • {2,5}:指定连续出现的字符数量。

示例:查找包含特定模式的行

要查找包含“eth”关键字的行,并显示前后两行:

dmesg | grep -n -A3 -B2 --color=auto 'eth'

输出结果:

247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10248:eth0: Identified 8139 chip type 'RTL-8139C'248:input: PC Speaker as /class/input/input249:eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1305:eth0: no IPv6 routers present

与fgrep的区别

fgrep(fixed grep)只支持固定的文本搜索,不支持正则表达式。例如:

fgrep '*' /etc/profile

与grep相比,fgrep的速度更快,但灵活性较低。

正则表达式实战

字符类的应用

想匹配“test”或“taste”,可以使用:

grep -n 't[ae]st' regular_express.txt

反向选择

要匹配不含“oo”的行:

grep -n '[^g]oo' regular_express.txt

行尾匹配

要查找以小数点结尾的行:

grep -n '\.$' regular_express.txt

空白行

要查找空白行:

grep -n '^$' regular_express.txt

任意数字

要查找包含数字的行:

grep -n '[0-9]' regular_express.txt

总结

grep命令是Linux系统文本处理的利器。通过掌握正则表达式和高级选项,用户可以高效地完成文件搜索、筛选和定位任务。同时,结合--color=auto选项,可以让输出更加直观。

转载地址:http://adwfk.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO三大组件基础知识
查看>>
NIO与零拷贝和AIO
查看>>
NIO同步网络编程
查看>>
NIO基于UDP协议的网络编程
查看>>
NIO笔记---上
查看>>
NIO蔚来 面试——IP地址你了解多少?
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>