我一直秉持的观点就是用到啥就学啥,很所博客都列举了grep的所有选项,乍一看30个左右!话说回来,能都记住当然好啦,但是那样所花的时间按成本太高了,好了言归正传:

首先创建一个测试文件:a.txt

[root@jiangshan blog]# cat a.txt

hell88

hello

Hello

nice

world

12345

(1) -v选项:--revert-match   #显示不包含匹配文本的所有行。这的v是小写的,我们知道大写V基本都是查询版本信息的,这里也不例外

example:

我要提取全是数字的行:

[root@jiangshan blog]# grep -v [a-z] a.txt

12345

#这里得注意了,通配符是匹配单个字符!之前想当然的这样写:grep [^a-z]  a.txt

[root@jiangshan blog]# grep  [^a-z] a.txt

hell88

12345

Hello

结果提取出的为不全是小写字母的行

(2)-r选项:-r 递归查询,此处不作赘述

(3)-i选项:忽略字母大小写

example:

[root@jiangshan blog]# grep -i h a.txt

hell88

hello

Hello

(4)很多时候,我们需要过滤的条件有多个,那么我们是用管道连接多个grep?显然不是,这就要用到我们的-E选项了:

example:

提取不以h(不论大小写)开头且不含数字的行?

[root@jiangshan blog]# grep -vEi "^h|[0-9]" a.txt

nice

world

(5)-c选项:--count   #计算符合样式的行数

example:

我们查看mysql进程数:

[root@jiangshan blog]# ps -ef|grep mysql -c

3

(6)-q选项:-q   --quiet或--silent   #不显示任何信息。

问题来了,既然它不显示任何信息,你是不是想说其然并卵?

可事实上他非常有用!可以应用于脚本中的逻辑判断。

example:

我要判断a.txt中是否有helloworld,有就输出yes否则输出no

[root@jiangshan blog]# if  grep -q helloworld a.txt;then echo yes;else echo no;fi

no

(7)-o选项:--only-matching: #只显示匹配到的部分

(8)-P选项:--perl-regexp:        #利用perl的正则语法进行匹配

其实perl的正则语法很多和shell正则语法深度一致。这里列举两个perl正则:

\d+         匹配多个数字字符串,和 [0-9]+ 语法一样

\w           英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样

perl正则判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符:

比如:

echo " mynamehelloworld321"|grep -Po  "(?<=name).*(?=321)"

输出:helloworld

转载于:https://blog.51cto.com/qjslovemsn/1702594

shell命令之(一) 初探grep相关推荐

  1. 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  2. 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk

    find 文件查找 查找txt和pdf文件 1 find . \( -name "*.txt" -o -name "*.pdf" \) -print 查找所有字 ...

  3. shell命令三剑客之grep命令详解

    文章目录 1. 通配符(globbing) 2. grep 2.1 linux系统支持的三种形式的grep命令 3. 正则表达式 3.1 扩展正则表达式 4. IP的正则 4.1 ip地址的类别 4. ...

  4. Shell 命令行获取本机IP,grep的练习

    Shell 命令行获取本机IP,grep的练习 在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息.不过通常情况下,我们需要查看的是我们的IP地址 ...

  5. Shell命令-文件及内容处理之grep(egrep)、join

    文件及内容处理 - grep(egrep).join 1. grep(egrep):文本过滤工具 grep(egrep)命令的功能说明 grep命令是Linux系统中最重要的命令之一,其功能是从文本文 ...

  6. 简单而常用的shell 命令

    基本但是很有用的shell 0.man $cmd 1.ls/ls -a/ls -l 2.cd==cd ~ 3.pwd 4.cp -r /home/usro1/exp /home/usr02 5.mv ...

  7. 【Linux学习笔记】 -- 基本Shell命令

    常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS) Linux的四个部分: 1 Linux内核:控制所有硬软件,必要时分配硬件根据需要执行软件 系 ...

  8. Linux中shell命令的用法和技巧

    使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并 ...

  9. Linux shell命令总结

    01 前言 Linux shell命令应该算是非常入门的东西,但是实际上在使用的时候,会遇到各种各样的问题,前几天我在我们的项目上需要做一个功能,根据进程名字杀死这个进程,下面是过程 1.我们正常需要 ...

  10. bash shell命令(2)

    在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...

最新文章

  1. VMware克隆出来的网卡错误
  2. Win32汇编最简ComboBox Demo
  3. tomcat mysql eclipse_eclipse与tomcat及javaweb和mysql相关内容
  4. Redis常用概念简介
  5. sql 联合查询_一张图看懂sql运行顺序
  6. Codeforces.666E.Forensic Examination(广义后缀自动机 线段树合并)
  7. python开发【基础二】
  8. 练习mvc做一个知识库(二)
  9. Hbuilder 移动app
  10. 收藏:通俗讲解计算机工作原理
  11. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 - 上
  12. python小波去噪实验
  13. linux命令一个减号,linux shell环境减号-的用途
  14. Ubuntu系统下如何提交代码到GitHub
  15. php session fixation,session fixation攻击
  16. php的常见加密方式,记录接口中常见的简单内容加密方式:恺撒加密的PHP实现
  17. SyncToy使用介绍
  18. python 抽奖器_如何基于python实现年会抽奖工具
  19. 为什么说 Ubuntu 22.04 LTS 是史诗级的版本
  20. 帖子浏览定位展开、收起标签js部分思路及代码

热门文章

  1. PHPUnit实践二(生命周期)
  2. 模态框到阻止冒泡时间
  3. Dart 2为移动开发做出改进
  4. Docker背后的内核知识:命名空间资源隔离
  5. Javascript对于不同浏览器的兼容性
  6. 注释的编写方式:写明白来龙去脉提高代码产出率
  7. java 正则表达式入门(一)
  8. C/C++:多个.cpp文件包括同一个.h头文件定义方法
  9. Data Protection Manager 2010 系列之安装部署
  10. buHdoZer‘s Arch