grep是UNIX和LINUX中使用最广泛的命令之一。grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。grep有三种变形,即:

grep:标准grep命令,这里主要讨论此格式;

Egrep:等同于grep -E,扩展grep,支持基本及扩展的正则表达式;

Fgrep:等同于grep -F,不支持正则表达式,允许查找字符串而不是一个模式。

grep有很多选项可供使用,有问题找“男人”,会有详细说明,我这里只是说说我所使用到的,最近需要写一些shell脚本,在这过程中有用到grep命令。下面就是几种使用场景:

1.  查找A目录下所有文件中特定内容是否在B目录下对应文件中存在

解决办法:借助grep把A目录下每个文件里特定内容输出到另外一个文件中,B目录同样处理,使用命令:

grep  "define" fileA > listA

grep  "define" fileA > listB

因为define后面的部分内容不一样,我们的目的是找出类似define("TEST_A","testa");格式而文件没有TEST_A的部分,当然里面有很多不同的define语句。如果使用diff命令来对比的话难以应付,所以可以使用windows下的BeyondCompare工具进行人工比对,不同的内容会标红一目了然,那么至少在逗号前面相同部分是不会标红的,关于这个工具还有更多的用处,感兴趣的可以搜索一下。

2.  要对某目录下除了个别文件外的所有内容打包压缩

解决办法:使用grep -v注意是小写的v,意为不包含匹配的行,而大写的V意为版本。

完整命令可以写为:

ls PATH | grep -v '.log' | grep -v '.tar.gz' > tar.list

目的把需要打包的文件及目录名(排除.log及.tar.gz后缀名文件)写入tar.list

第二步即进行打包操作:

cat tar.list | xargs tar -zcvf target.tar.gz

把cat出的结果作为参数传入管道后面执行打包命令,这也是xargs的用法.

3.  找出目录下最新的满足"target_数字"格式的目录

解决办法: 使用grep -e当然使用-E也可以。

完整命令为:

ls PATH --sort=time | grep -e  resource_\d* | head -1

使用ls的选项--sort=time时间排序排列,而head即是获取命中的第一部分。

你应该知道的grep命令相关推荐

  1. 29 个你必须知道的 Linux 命令

    29 个你必须知道的 Linux 命令 2016-08-12    分类:操作系统.编程开发.首页精华暂无人评论     来源:dwqs 分享到:更多0 虽然Linux发行版支持各种各样的饿GUI(g ...

  2. linux 终端 画圆,16个圆桌面Linux用户必须要知道的Shell命令

    16个圆桌面Linux用户必须要知道的Shell命令 16个圆桌面Linux用户必须要知道的Shell命令 日期:2014-05-16 浏览次数:20305 次 16个桌面Linux用户必须要知道的S ...

  3. 你应该知道的linux命令 — lsof

    在linux下有很多好用的命令,今天这里介绍lsof 命令 lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备 ...

  4. 必须知道的linux命令,29 个你必须知道的 Linux 命令

    虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...

  5. 小白需要知道的git命令

    小白需要知道的Git命令 git remote add origin(这里一般这样写,当然可以写别的) 之后写clone or download里复制来的东西,可以ssh或者https git rem ...

  6. linux 查看桌面目录下,16个桌面Linux用户必须要知道的Shell命令

    有些人仍然会有这中愚蠢的想法,他们认为使用Linux就必须使用Linux shell命令.胡说!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面 ...

  7. 很少人知道的Linux命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...

  8. 你应该知道的 Linux 命令行技巧

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章来源于Quroa的一个问答<What are some time-saving tips that every ...

  9. 运维应该知道的Linux命令

    1. mkdir:创建目录 -p递归创建 2. touch:创建文件 3. ls:列表目录 -a显示所有文件,包括隐藏文件,默认.开头的文件就是隐藏文件 -A显示除. ..以外的所有文件 -l详细信息 ...

最新文章

  1. mysql 查询不使用索引_简单的mySQL查询不使用索引
  2. cmd查看所有数据库 db2_DB2数据库常用命令集
  3. CMU创建一个开源的AI代码生成模型,C语言表现优于Codex
  4. 中国联邦学习「五大流派」
  5. 用Artifactory管理内部Maven仓库
  6. P3261-[JLOI2015]城池攻占【左偏树】
  7. 如何导出数据到Excel表格
  8. Python reload 函数 - Python零基础入门教程
  9. Centos 7 GCC 7.3编译器安装方法及C++17标准测试示例
  10. 华三服务器linux系统安装u盘,华三H3CR4900服务器安装linux系统
  11. 机器学习基础算法29-EM实践
  12. 软考数据库系统工程师笔记
  13. SQL注入-盲注(布尔盲注与时间盲注)
  14. 破解版xmind 8
  15. 34亿骗局!如何“杀死”萝卜章?
  16. WordPress如何设置先登录再进入主页
  17. Xshell重启服务器
  18. Java虚拟机部分知识点
  19. 用预处理指令#define 声明一个常数,用以表明一年中有多少秒
  20. html不同板块点击切换,板块快速切换的操作策略

热门文章

  1. Linux 下搭建 WordPress 个人站点
  2. HDU 5734 Acperience
  3. 用python编写ios应用
  4. Mac解决中文matplotlib乱码问题
  5. php下载提示保存,php利用header函数实现文件下载时直接提示保存_php技巧
  6. 帆软填报增加记录提交成功后没有_大病医疗填报图解
  7. python怎么使用int四舍五入_python中如何取整数
  8. 软件测试 单元测试用例设计,单元测试的用例设计
  9. Python内置函数之输入输出函数
  10. static string java_java:String类、static关键字、Arrays类、 Math类