grep使用

本文详细介绍Linux环境下grep命令的使用方法,包括基本语法、各种选项的功能介绍及其应用场景。通过实例演示了如何利用正则表达式进行复杂的文本匹配操作,如模式匹配、范围查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 linux_NGIN:~/script/grep> more data.f
48        Dec     3BC1997 LPSX    68.00   LVX2A   138
483     Sept     5AP1996 USP      65.00   LVX2C   189
47       Oct       3ZL1998 LPSX     43.00   KVM9D   512
219     dec      2CC1999 CAD     23.00   PLV2C    68
484     nov      7PL1996 CAD      49.00   PLV2C    234
483     may     5PA1998 USP      37.00   KVM9D   644
216     sept    3ZL1998 USP       86.00   KVM9E   234

1、GREP

格式:

grep [选项] 基本正则表达式 [文件]

双引号引用:

防止误解为shell命令;可用来查找多个单词组成的字符串。调用模式匹配时,才用单引号。

grep选项:

-c 只输出匹配行的计数

-i 不区分大小写(只适用于单字符)

-h 查询多文件时不显示文件名

-l 查询多文件时只显示包含匹配字符的文件名

-n 显示匹配行及行号

-s 不显示不存在或无匹配文本的错误信息

-v 显示不包含匹配文本的所有行

linux_NGIN:~/script/grep> grep -c "48" data.f   ----显示匹配行数
4

linux_NGIN:~/script/grep> grep -n "48" data.f   ----显示行数
1:48    Dec     3BC1997 LPSX    68.00   LVX2A   138
2:483   Sept    5AP1996 USP     65.00   LVX2C   189
5:484   nov     7PL1996 CAD     49.00   PLV2C   234
6:483   may     5PA1998 USP     37.00   KVM9D   644

linux_NGIN:~/script/grep> grep -v "48" data.f   ------显示非匹配行
47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
219     dec     2CC1999 CAD     23.00   PLV2C   68
216     sept    3ZL1998 USP     86.00   KVM9E   234

linux_NGIN:~/script/grep> grep "48\>" data.f   -------精确匹配
48      Dec     3BC1997 LPSX    68.00   LVX2A   138

2、GREP和正则表达式(单引号括起来)

模式范围:

 

不匹配行首:

linux_NGIN:~/script/grep> grep '^[^84]' data.f
219     dec     2CC1999 CAD     23.00   PLV2C   68
216     sept    3ZL1998 USP     86.00   KVM9E   234

设置大小写:

linux_NGIN:~/script/grep> grep '[Dd]ec' data.f
48      Dec     3BC1997 LPSX    68.00   LVX2A   138
219     dec     2CC1999 CAD     23.00   PLV2C   68

匹配任意字符:

linux_NGIN:~/script/grep> grep '[A-Z][A-Z]..C' data.f
483     Sept    5AP1996 USP     65.00   LVX2C   189
219     dec     2CC1999 CAD     23.00   PLV2C   68
484     nov     7PL1996 CAD     49.00   PLV2C   234

日期查询:

linux_NGIN:~/script/grep> grep '[0-9]\{3\}[8]' data.f
47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
483     may     5PA1998 USP     37.00   KVM9D   644
216     sept    3ZL1998 USP     86.00   KVM9E   234

范围组合:

linux_NGIN:~/script/grep> grep '^[0-9][0-5][0-6]' data.f
216     sept    3ZL1998 USP     86.00   KVM9E   234

模式出现机率:

linux_NGIN:~/script/grep> grep '4\{2,\}' data.f
483     may     5PA1998 USP     37.00   KVM9D   644

匹配“与”或“或”模式:

linux_NGIN:~/script/grep> grep -E '219|216' data.f
219     dec     2CC1999 CAD     23.00   PLV2C   68
216     sept    3ZL1998 USP     86.00   KVM9E   234

空行:

grep '^$' data.f

匹配特殊字符:

grep '\.' data.f

grep "\^" data.f

查询格式化文件名:

grep '[^a-z]\{1,6\}\.[^A-Z]\{1,2\}' filename

查询IP文件地址:

grep '[0-9]\{3\}.[0-9]\{3}\.' ipfile

 

3、类名

[[:upper:]]

[[:lower:]]

[[:upper:]]

[[:digit:]]

[[:upper:]]

 3、类名

[[:upper:]]  [A-Z]

[[:lower:]]  [a-z]

[[:digit:]]  [0-9]

[[:almun:]]  [0-9a-zA-Z]

[[:space:]]  空格或者tab

[[:alpha:]]  [a-zA-Z]

linux_NGIN:~/script/grep> grep '5[[:upper:]][[:upper:]]' data.f
483     Sept    5AP1996 USP     65.00   LVX2C   189
483     may     5PA1998 USP     37.00   KVM9D   644

linux_NGIN:~/script/grep> grep '[[:upper:]][[:upper:]][P,D]' data.f
483     Sept    5AP1996 USP     65.00   LVX2C   189
219     dec     2CC1999 CAD     23.00   PLV2C   68
484     nov     7PL1996 CAD     49.00   PLV2C   234
483     may     5PA1998 USP     37.00   KVM9D   644
216     sept    3ZL1998 USP     86.00   KVM9E   234

 

4、系统grep命令

linux_NGIN:~/script> ls -l | grep '^d'

linux_NGIN:~/script> ls -l | grep '^[^d]'

linux_NGIN:~ # grep "test" /etc/passwd >/dev/null 2>&1

linux_NGIN:~ # ps ax | grep "named"
 2455 pts/7    S+     0:00 grep named
linux_NGIN:~ # ps ax | grep "named" | grep -v "grep"

 

5、egrep命令(可以以一个文件做为保存的字符串传给grep做为参数,使用-f 开关;接收所有正则表达式)

grep -f file1 data.f

linux_NGIN:~/script/grep> egrep 'USP|CAD' data.f
483     Sept    5AP1996 USP     65.00   LVX2C   189
219     dec     2CC1999 CAD     23.00   PLV2C   68
484     nov     7PL1996 CAD     49.00   PLV2C   234
483     may     5PA1998 USP     37.00   KVM9D   644
216     sept    3ZL1998 USP     86.00   KVM9E   234

see119:~ # who | egrep '(enip|bmp)'
enip     pts/1        Nov 16 10:39 (10.137.119.219)
bmp      pts/5        Nov 16 08:48 (10.138.56.82)
enip     pts/9        Nov 10 22:58 (10.138.56.74)

see119:~ # who | egrep -v '^(enip|bmp)'

 
 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值