首页 > 系统相关 >Linux grep 命令

Linux grep 命令

时间:2023-12-26 20:34:38浏览次数:37  
标签:grep -- 命令 NUM Linux test 匹配 txt

Linux grep 命令

1: 作用

​ grep是一种文本搜索工具,它能使用特定的搜索模式,包括[正则表达式]搜索文本,并默认输出匹配行。

​ windows类似的命令是findstr.

2:语法

grep -options(参数) pattern(关键词) files(文本文件)

3:主要参数

可以通过grep --help来查看grep相关命令

用法: grep [选项]... 模式 [文件]...
在每个<文件>中查找给定<模式>。
例如:grep -i 'hello world' menu.h main.c
<模式>可以包括多个模式字符串,使用换行符进行分隔。

模式选择与解释:
  -E, --extended-regexp     <模式> 是扩展正则表达式
  -F, --fixed-strings       <模式> 是字符串
  -G, --basic-regexp        <模式> 是基本正则表达式
  -P, --perl-regexp         <模式> 是 Perl 正则表达式
  -e, --regexp=<模式>       用指定的<模式>字符串来进行匹配操作
  -f, --file=<文件>         从给定<文件>中取得<模式>
  -i, --ignore-case         在模式和数据中忽略大小写
      --no-ignore-case      不要忽略大小写(默认)
  -w, --word-regexp         强制<模式>仅完全匹配字词
  -x, --line-regexp         强制<模式>仅完全匹配整行
  -z, --null-data           数据行以一个 0 字节结束,而非换行符

杂项:
  -s, --no-messages         不显示错误信息
  -v, --invert-match        选中不匹配的行
  -V, --version             显示版本信息并退出
      --help                显示此帮助并退出

输出控制:
  -m, --max-count=<次数>    得到给定<次数>次匹配后停止
  -b, --byte-offset         输出的同时打印字节偏移
  -n, --line-number         输出的同时打印行号
      --line-buffered       每行输出后刷新输出缓冲区
  -H, --with-filename       为输出行打印文件名
  -h, --no-filename         输出时不显示文件名前缀
      --label=<标签>        将给定<标签>作为标准输入文件名前缀
  -o, --only-matching       只显示行中非空匹配部分
  -q, --quiet, --silent     不显示所有常规输出
      --binary-files=TYPE   设定二进制文件的 TYPE(类型);
                            TYPE 可以是 'binary'、'text' 或 'without-match'
  -a, --text                等同于 --binary-files=text
  -I                        等同于 --binary-files=without-match
  -d, --directories=ACTION  读取目录的方式;
                            ACTION 可以是`read', `recurse',或`skip'
  -D, --devices=ACTION      读取设备、先入先出队列、套接字的方式;
                            ACTION 可以是`read'或`skip'
  -r, --recursive           等同于--directories=recurse
  -R, --dereference-recursive       同上,但遍历所有符号链接
      --include=GLOB        只查找匹配 GLOB(文件模式)的文件
      --exclude=GLOB        跳过匹配 GLOB 的文件
      --exclude-from=FILE   跳过所有匹配给定文件内容中任意模式的文件
      --exclude-dir=GLOB    跳过所有匹配 GLOB 的目录
  -L, --files-without-match  只打印没有匹配上的<文件>的名称
  -l, --files-with-matches  只打印有匹配的<文件>的名称
  -c, --count               只打印每个<文件>中的匹配行数目
  -T, --initial-tab         行首制表符对齐(如有必要)
  -Z, --null                在<文件>名最后打印空字符

文件控制:
  -B, --before-context=NUM  打印文本及其前面NUM 行
  -A, --after-context=NUM   打印文本及其后面NUM 行
  -C, --context=NUM         打印NUM 行输出文本
  -NUM                      等同于 --context=NUM
      --color[=WHEN],
      --colour[=WHEN]       使用标记高亮匹配字串;
                            WHEN 可以是“always”、“never”或“auto”
  -U, --binary              不要清除行尾的 CR 字符(MSDOS/Windows)

若给定<文件>为“-”,则从读取标准输入。  若无<文件>参数,则除非处于
递归工作模式视为从“.”读取之外,一律视为从“-”读取。如果提供了少于
两个<文件>参数,则默认启用 -h 选项。如果有任意行(或者指定了 -L 选项
并有任意文件)被匹配,则退出状态为 0,否则为 1;如果有错误产生,且未指
定 -q 参数,则退出状态为 2。

4:示例

创建test.txt文件,写入部分内容如下:

请将错误报告给:[email protected]。翻译问题请报告至 <[email protected]>。
GNU grep 主页: <http://www.gnu.org/software/grep/>
GNU 软件的通用帮助: <https://www.gnu.org/gethelp/>
4.1过滤基础文件
ls |grep test

grep过滤当前目录下test文件夹/文件。

4.2 忽略大小写
grep -i  "gnu" test.txt

image-20231117181630938

grep -i --no-ignore-case  "gnu" test.txt

image-20231117180003728

4.3 显示行数以及命中行的文件
grep -n "gnu" test.txt

image-20231117180345458

grep -n "错误" test.txt

image-20231117180510527

4.4 选中不匹配的行
grep -v "错误" test.txt

image-20231117181706429

4.5 得到给定<次数>次匹配后停止
grep -m 1  "gnu" test.txt

得到结果如下:

image-20231117182036136

grep -m 10  "gnu" test.txt

image-20231117182622365

标签:grep,--,命令,NUM,Linux,test,匹配,txt
From: https://www.cnblogs.com/zhjing/p/17929304.html

相关文章

  • openjdk源码-java是如何执行shell命令的
    一般我们在java中调用shell脚本的方式如下publicintexecuteLinuxCmd(Stringcmd){LOGGER.info("cmd:{}",cmd);Runtimerun=Runtime.getRuntime();try{Processprocess=run.exec(cmd);InputStreamin=proce......
  • 03-redis事务,锁和服务器管理命令
    一、redis中的事务redis中的事务跟关系型数据库中的事务是一个相似的概念,但是有不同之处。关系型数据库事务执行失败后面的sql语句不在执行,而redis中的一条命令执行失败,其余的命令照常执行。redis中开启一个事务是使用multi,相当于begin\starttransaction,exec提交事务,discard取......
  • 软件测试/测试开发|Ubuntu系统常用文件管理命令详解
    前言Ubuntu是一种广泛使用的Linux操作系统,提供了丰富而强大的文件管理命令,使用户能够通过命令行轻松管理文件和目录。本文将介绍一些常用的Ubuntu文件管理命令,帮助用户更好地理解和利用系统资源。ls-列出目录内容ls[选项][目录]ls命令用于列出目录中的文件和子目录。......
  • 软件测试/测试开发|一文详解Linux grep命令
    简介grep命令是最常用的Linux命令之一,用于对文件和文本执行重复搜索的工具,功能非常强大,也是我们必须学习掌握的Linux三剑客之一,本文就给大家介绍一下grep命令的使用。grep的基本语法grep作为一款文本搜索工具,可以根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打......
  • Docker 运行命令
    停止所有的容器dockerstop$(dockerps-aq)启动所有的容器dockerstart$(dockerps-aq)停止容器dockerstop<容器Name>启动容器dockerstart<容器Name>删除所有的容器dockerrm-f$(dockerps-aq)删除所有的镜像docker-composedown--rmiall删除容器docke......
  • 3、 configure命令详解
    1、configure命令工作检测操作系统内核和已安装的软件相关参数解析中间目录生成生成c源码文件生成Makefile文件2、configure命令参数详解运行./configure--help--helpprintthismessage--prefix=PATHset......
  • Linux相关扫盲1
    1、Linux操作系统发行版有哪些?Ubuntu: 一个以桌面应用为重点的发行版,也有服务器版本。Fedora: 由全球志愿者社区支持的发行版,注重在新技术的采用上。Debian: 以稳定性和开放性著称,是许多其他发行版的基础。CentOS: 以稳定性和长期支持为目标,被广泛用于服务器环境。ArchLinux......
  • Linux进阶(二)
    一、常用的一些基本命令1、管理文件和目录的命令命令功能命令功能pwd显示当前目录ls查看目录下的内容cd改变所在目录cat显示文件的内容grep在文件中查找某字符cp复制文件touch创建文件mv移动文件rm删除文件rmdir删除目录2、在文件系统中查找文件和目录find/home/soft-name"file_......
  • Linux驱动开发之杂项设备注册和Linux2.6设备注册
    Linux设备驱动开发中,需要向内核正确注册设备,才能创建设备节点,以供应用层访问。本文将详细介绍Linux下的两种设备注册方法:杂项设备注册和Linux2.6新方法注册。一、杂项设备注册杂项设备注册简介杂项设备注册是Linux驱动开发中的一种设备注册方式。在Linux系统中,杂项设备是一类......
  • grep -Ev '#|^$' zabbix_server.conf 显示配置文件 命令
    grep-Ev'#|^$'zabbix_server.confroot@k8s-node01:/etc/zabbix#grep-Ev'#|^$'zabbix_server.confLogFile=/var/log/zabbix/zabbix_server.logLogFileSize=0PidFile=/run/zabbix/zabbix_server.pidSocketDir=/run/zabbixDBName=zabbixDBUser=......