Linux命令grep使用介绍

1.作用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式

grep [options]

3.主要参数

[options]主要参数:

-c:只输出匹配行的计数。

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

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

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

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

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

pattern正则表达式主要参数:

\: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\<:从匹配正则表达 式的行开始。

\>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ – ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

。:所有的单个字符。

* :有字符,长度可以为0。

4.grep命令使用简单实例

$ grep ‘test’ d*

显示所有以d开头的文件中包含 test的行。

$ grep ‘test’ aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep ‘[a-z]\{5\}’ aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep ‘w\(es\)t.*\1′ aa

如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

5.grep命令使用复杂实例

假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:

$ grep magic /usr/src/Linux/Doc/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。

默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出:

grep: sound: Is a directory

这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法:

明确要求搜索子目录:grep -r

或忽略子目录:grep -d skip

如果有很多 输出时,您可以通过管道将其转到’less’上阅读:

$ grep magic /usr/src/Linux/Documentation/* | less

这样,您就可以更方便地阅读。

有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 ,然后再试。

下面还有一些有意思的命令行参数:

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

grep -C number pattern files :匹配的上下文分别显示[number]行,

grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files  即可显示行号信息

grep -c pattern files  即可查找总行数

这里还有些用于搜索的特殊符号:

\ 分别标注单词的开始与结尾。

例如:

grep man * 会匹配 ‘Batman’、’manic’、’man’等,

grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,

grep ‘\’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。

‘^’:指匹配的字符串在行首,

‘$’:指匹配的字符串在行 尾,

Grep 命令 用法大全

1、 参数: 

-I :忽略大小写 

-c :打印匹配的行数 

-l :从多个文件中查找包含匹配项 

-v :查找不包含匹配项的行 

-n:打印包含匹配项的行和行标 

2、RE(正则表达式) 

\ 忽略正则表达式中特殊字符的原有含义 

^ 匹配正则表达式的开始行 

$ 匹配正则表达式的结束行 

\< 从匹配正则表达式的行开始 

\> 到匹配正则表达式的行结束 

[ ] 单个字符;如[A] 即A符合要求 

[ – ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 

. 所有的单个字符 

* 所有字符,长度可以为0 

3、举例 

# ps -ef | grep in.telnetd 

root 19955 181 0 13:43:53 ? 0:00 in.telnetd 

# more size.txt size文件的内容 

b124230 

b034325 

AppMall应用商店 AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店 56 查看详情 AppMall应用商店

a081016 

m7187998 

m7282064 

a022021 

a061048 

m9324822 

b103303 

a013386 

b044525 

m8987131 

B081016 

M45678 

B103303 

BADc2345 

# more size.txt | grep ‘[a-b]’ 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 

b124230 

b034325 

a081016 

a022021 

a061048 

b103303 

a013386 

b044525 

# more size.txt | grep ‘[a-b]’* 

b124230 

b034325 

a081016 

m7187998 

m7282064 

a022021 

a061048 

m9324822 

b103303 

a013386 

b044525 

m8987131 

B081016 

M45678 

B103303 

BADc2345 

# more size.txt | grep ‘b’ 单个字符;如[A] 即A符合要求 

b124230 

b034325 

b103303 

b044525 

# more size.txt | grep ‘[bB]’ 

b124230 

b034325 

b103303 

b044525 

B081016 

B103303 

BADc2345 

# grep ‘root’ /etc/group 

root::0:root 

bin::2:root,bin,daemon 

sys::3:root,bin,sys,adm 

adm::4:root,adm,daemon 

uucp::5:root,uucp 

mail::6:root 

tty::7:root,tty,adm 

lp::8:root,lp,adm 

nuucp::9:root,nuucp 

daemon::12:root,daemon 

# grep ‘^root’ /etc/group 匹配正则表达式的开始行 

root::0:root 

# grep ‘uucp’ /etc/group 

uucp::5:root,uucp 

nuucp::9:root,nuucp 

# grep ‘\<uucp' /etc/group 

uucp::5:root,uucp 

# grep ‘root$’ /etc/group 匹配正则表达式的结束行 

root::0:root 

mail::6:root 

# more size.txt | grep -i ‘b1..*3’ -i :忽略大小写 

b124230 

b103303 

B103303 

# more size.txt | grep -iv ‘b1..*3’ -v :查找不包含匹配项的行 

b034325 

a081016 

m7187998 

m7282064 

a022021 

a061048 

m9324822 

a013386 

b044525 

m8987131 

B081016 

M45678 

BADc2345 

# more size.txt | grep -in ‘b1..*3’ 

1:b124230 

9:b103303 

15:B103303 

# grep ‘$’ /etc/init.d/nfs.server | wc -l 

128 

# grep ‘\$’ /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义 

15 

# grep ‘\$’ /etc/init.d/nfs.server 

case “$1” in 

>/tmp/sharetab.$$ 

[ “x$fstype” != xnfs ] && 

echo “$path\t$res\t$fstype\t$opts\t$desc” 

>>/tmp/sharetab.$$ 

/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$ 

/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab 

if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v ‘^[ ]*(#|$)’ 

if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && 

if [ $startnfsd -ne 0 ]; then 

elif [ ! -n “$_INIT_RUN_LEVEL” ]; then 

while [ $wtime -gt 0 ]; do 

wtime=`expr $wtime – 1` 

if [ $wtime -eq 0 ]; then 

echo “Usage: $0 { start | stop }” 

# more size.txt 

the test file 

their are files 

The end 

# grep ‘the’ size.txt 

the test file 

their are files 

# grep ‘\<the' size.txt 

the test file 

their are files 

# grep ‘the\>’ size.txt 

the test file 

# grep ‘\’ size.txt 

the test file 

# grep ‘\’ size.txt 

the test file

==================================================================

1,简介

使用正则表达式的一个多用途文本搜索工具.这个php?name=%C3%FC%C1%EE” onclick=”tagshow(event)” class=”t_tag”>命令本来是ed行编辑器中的一个php?name=%C3%FC%C1%EE” onclick=”tagshow(event)” class=”t_tag”>命令/过滤器:

        g/re/p — global – regular expression – print.

基本格式

grep pattern [file…]

(1)grep 搜索字符串 [filename]

(2)grep 正则表达式 [filename]

在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.

注意:在输入要搜索的字符串时最好使用双引号/而在模式匹配使用正则表达式时,注意使用单引号

2,grep的选项

    -c 只输出匹配行的计数

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

    -n 显示匹配的行号

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

    -s 不显示错误信息

    -E 使用扩展正则表达式

    更多的选项请查看:man grep

3,常用grep实例

(1)多个文件查询

    grep “sort” *.doc       #见文件名的匹配

(2)行匹配:输出匹配行的计数

    grep -c “48” data.doc   #输出文档中含有48字符的行数

(3)显示匹配行和行数

    grep -n “48” data.doc       #显示所有匹配48的行和行号

(4)显示非匹配的行

    grep -vn “48” data.doc      #输出所有不包含48的行

(4)显示非匹配的行

    grep -vn “48” data.doc      #输出所有不包含48的行

(5)大小写敏感

    grep -i “ab” data.doc       #输出所有含有ab或Ab的字符串的行

4, 正则表达式的应用

(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)

    grep ‘[239].’ data.doc      #输出所有含有以2,3或9开头的,并且是两个数字的行

(2)不匹配测试

    grep ‘^[^48]’ data.doc      #不匹配行首是48的行

(3)使用扩展模式匹配

    grep -E ‘219|216’ data.doc

(4) …

    这需要在实践中不断应用和总结,熟练掌握正则表达式。

5, 使用类名

可以使用国际模式匹配的类名:

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

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

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

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

[[:space:]]   空格或tab

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

(1)使用

    grep ‘5[[:upper:]][[:upper:]]’ data.doc     #查询以5开头以两个大写字母结尾的行

以上就是Linux命令grep使用介绍的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/558395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 23:43:58
下一篇 2025年11月9日 23:45:19

相关推荐

  • linux如何运行c程序命令

    linux运行c程序命令的方法:首先打开kali linux的终端,用vim工具打开文件并编写代码;然后输入【gcc test.cgcc】进行编译;最后再运行【test.out】在终端中输入【./test.out】。 本教程操作环境:linux7.3系统,DELL G3电脑。 linux运行c程序命…

    2025年12月5日 运维
    000
  • 如何在Laravel中配置队列工作器

    在laravel中配置队列工作器的核心步骤是设置队列驱动并启动监听进程,以提升应用性能和用户体验。1. 修改.env文件中的queue_connection变量,如设为redis以启用高性能队列;2. 配置redis连接信息确保其可用性;3. 使用php artisan queue:work命令启动…

    2025年12月5日
    100
  • PHPMyAdmin执行SQL语句时结果集显示不全的处理办法

    要解决phpmyadmin执行sql语句结果集显示不全的问题,需调整其配置文件中的两个核心参数:1. 修改$cfg[‘maxrows’]以增加最大显示行数;2. 修改$cfg[‘limitchars’]以增加单元格内容显示长度。此外,还可通过导出数据、…

    2025年12月5日 后端开发
    000
  • linux怎么创建新用户和设置密码

    在linux中,可以使用“useradd 用户名”命令来创建新用户;然后使用“passwd 用户名”命令来给已创建的用户设置密码,需要输入两次密码来确保密码的正确。新创建的用户会在“/home”下创建一个用户名目录。 本教程操作环境:Red Hat Enterprise Linux 6.1系统、De…

    2025年12月5日 运维
    000
  • linux修改用户密码的方法是什么

    linux修改用户密码的方法:首先用CRT软件连接Linux系统,并查看登录用户信息;然后若修改root自己的密码,直接输入passwd;最后若修改其他用户,如oracle的密码,可直接输入passwd oracle。 本教程操作环境:linux7.3系统,SecureCRT 8.7.1绿色版,DE…

    2025年12月5日 运维
    000
  • 如何在Laravel中实现定时任务

    在laravel中实现定时任务,核心思路是利用框架的调度器集中管理任务,并通过服务器cron每分钟触发一次调度器执行。1. 创建命令:使用 php artisan make:command 生成命令类并编写业务逻辑;2. 注册任务:在 app/console/kernel.php 的 schedul…

    2025年12月5日
    000
  • linux查看文件大小的方法是什么

    linux查看文件大小的方法:1、使用stat命令查看文件系统的详细信息显示;2、利用wc指令计算文件的Byte数等等;3、使用du命令查看使用空间;4、ls命令用来显示目标列表。 本教程操作环境:linux7.3系统,DELL G3电脑。 linux查看文件大小的方法: 一、stat命令 stat…

    2025年12月5日
    000
  • 怎么使用 Yocto 构建文件系统?

    简介 yocto项目采用一种更加强大和定制的途径来构建适合嵌入式产品的linux系统。yocto不仅仅是一个制作文件系统的工具,同时提供了一整套基于linux的开发和维护工作流程,使得底层嵌入式开发者和上层应用开发者可以在统一的框架下进行开发,解决了传统开发方式下零散和无管理的开发问题。 Yocto…

    2025年12月5日 运维
    000
  • linux系统关机命令是什么

    linux系统关机命令:1、“shutdown -h now”或“shutdown -p now”;2、“halt”或“halt -p”;3、“poweroff”或“poweroff –halt”;4、“reboot -p”。 本教程操作环境:Red Hat Enterprise Lin…

    2025年12月5日
    000
  • unix和linux的区别是什么

    unix和linux的区别:1、UNIX是商业化的,而Linux是开源的,是免费、公开源代码的;2、UNIX系统大多是与硬件配套的,也就是说无法安装在x86服务器和个人计算机上的,而Linux则可以运行在多种硬件平台上。 本教程操作环境:linux7.3系统,DELL G3电脑。 unix和linu…

    2025年12月5日
    000
  • linux怎么查看磁盘空间

    linux查看磁盘空间的方法:1、使用df命令,可以查看文件系统,并获取硬盘被占用了多少空间,目前还剩下多少空间等信息。2、使用du命令,可以显示磁盘空间的使用情况。 本教程操作环境:Red Hat Enterprise Linux 6.1系统、Dell G3电脑。 1、使用df命令 df 以磁盘分…

    2025年12月5日
    000
  • linux怎么查看历史命令

    linux查看历史命令可以使用history命令,该命令可以列出所有已键入的命令。用户所键入的命令都会记录在文件中,该文件保存在当前登录用户的家目录中。 本文操作环境:centos 7系统、thinkpad t480电脑。 在Linux环境中可以通过方向键的上下按键查看近期键入的命令。但这种方法只能…

    2025年12月5日
    000
  • linux压缩命令是什么

    linux压缩命令有gzip、bzip和xz三种。其中,gzip压缩速度最快,是应用最广泛的压缩方式,xz是最新的压缩方式,可以自动提供最佳的压缩率。 本文操作环境:centos7系统、thinkpad t480电脑。 linux主要有三种压缩方式: 1、gzip:是公认的压缩这速度最快,压缩大文件…

    2025年12月5日 运维
    000
  • linux中cp命令如何复制文件

    在linux中,可以使用cp命令复制文件,将源文件或目录复制到指定的目的文件或目录;它可以将单个源文件复制成一个指定文件名的具体文件或一个已经存在的目录下;该命令支持同时复制多个文件。 本教程操作环境:centos7系统、thinkpad t480电脑。 cp的命令格式 以移动文件1234.txt为…

    2025年12月5日 运维
    000
  • linux开启端口命令

    linux开启端口的命令是【firewall-cmd –zone=public –add-port=1935/tcp –permanent】。需要注意的是,我们在开启指定端口后需要重启防火墙。 本文操作环境:centos 7系统、thinkpad t480电脑。 …

    2025年12月5日
    000
  • dos2unix命令解决 Shell 脚本无法执行的问题

    大家好,又见面了,我是你们的朋友全栈君。 解决问题 在执行脚本时,报了以下错误: -sh: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory 出现上述类似的错误,原因是脚本在Windows下编辑后上传到Linux系统…

    2025年12月5日 运维
    000
  • linux进入目录的命令是什么

    linux进入目录的命令是“cd”,该命令的作用是切换至指定目录下,语法格式为“cd [dirName]”。参数“dirName”表示要切换的目标目录,可以是绝对路径或相对路径;若目录名称省略,则变换至使用者的home目录。 本教程操作环境:Red Hat Enterprise Linux 6.1系…

    2025年12月5日
    000
  • linux如何返回上一级目录

    linux返回上一级目录的方法:1、在终端里输入“cd /上级目录名称”命令,按下“回车键”即可;2、在终端里输入cd和上级目录的代替“..”,命令格式为“cd ..”,按下“回车键”即可。 本教程操作环境:centos7系统、thinkpad t480电脑。 linux一般都是使用命令操作的,想要…

    2025年12月5日 运维
    000
  • linux怎么修改用户名

    linux修改用户名的方法:1、进入终端,执行“su -”命令,输入密码,获取root权限;2、执行“usermod -l 新用户名 旧用户名”或“groupmod -n 新用户名 旧用户名”命令修改用户名;3、重启电脑即可。 本教程操作环境:Red Hat Enterprise Linux 6.1…

    2025年12月5日 运维
    000
  • linux查找文件命令有哪些

    linux查找文件的命令:1、find命令,可以查找任何想要的文件;2、locate命令,查不到最新变动过的文件;3、whereis命令,只搜索二进制文件、man说明文件和源代码文件;4、which命令;5、type命令。 本教程操作环境:Red Hat Enterprise Linux 6.1系统…

    2025年12月5日
    000

发表回复

登录后才能评论
关注微信