egrep 实用参数
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
-r : --recursive
-i :忽略大小写的不同,所以大小写视为相同
-c :计算找到 '搜寻字符串' 的次数
-l : files-with-matches print only names of FILEs containing matches
# grep -l -r ‘test’ * #在当前目录及其子目录下搜索'test'的文件,但是不显示匹配的行,只显示匹配的文件
-r : 文本输出控制:
- -A num, --after-context=num: 在结果中同时输出匹配行之后的num行
- -B num, --before-context=num: 在结果中同时输出匹配行之前的num行,有时候我们需要显示几行上下文。
- -C num, 匹配行的前后num行都输出
管道:
我们可以通过管道操作来让grep变得更强大,管道操作就是把前面一条命令的输出作为后面一条命令的输入。
例如,如果我们想查找包含apple的行,但又想过滤掉pineapple,可以用下面的命令:
grep apple fruitlist.txt | grep -v pineapple
如果我们想把搜索结果保存起来,那么可以把命令的标准输出重定向到文件:
grep apple fruitlist.txt | grep -v pineapple > apples.txt
重定向符号>和管道操作符号|的区别是,重定向后面接的是一个文件,它后面不能再接任何文件或命令了;
而管道操作后面接的是命令,可以无限地接下去。如果想以追加方式写到文件,可以用>>。
--
正则表达式
[]
grep -n 't[ae]st' regular_express.txt - 『tast』或『test』
[] 仅代表一个。 [^]
反向选择 [^]
grep -n '[^g]oo' regular_express.txt -有 oo 的行,但不想要 oo 前面有 g 当我们在一组集合字节中,如果该字节组是连续的,例如大写英文/小写英文/数字等等, 就可以使用[a-z],[A-Z],[0-9]等方式来书写
那么如果我们的要求字串是数字与英文呢? 呵呵!就将他全部写在一起,变成:[a-zA-Z0-9] 行首与行尾字节 ^ $
grep -n '^the' regular_express.txt - the 只在行首列
grep -n '^[^a-zA-Z]' regular_express.txt - 不想要开头是英文字母
grep -n '\.$' regular_express.txt 行尾结束为小数点 (.) 的那一行
grep -n '^$' regular_express.txt 找出空白行 任意一个字节 . 与重复字节 *
. (小数点):代表『一定有一个任意字节』的意思;
* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态
grep -n 'g..d' regular_express.txt --g??d 的字串,亦即共有四个字节, 起头是 g 而结束是 d
『o*』代表的是:『拥有空字节或一个 o 以上的字节』
grep -n 'ooo*' regular_express.txt -『至少两个 o 以上的字串』时,就需要 ooo*
grep -n 'goo*g' regular_express.txt 字串开头与结尾都是 g,但是两个 g 之间仅能存在至少一个 o
grep -n 'g.*g' regular_express.txt g 开头与 g 结尾的行
grep -n '[0-9][0-9]*' regular_express.txt 找出『任意数字』的行
限定连续 RE 字符范围 {}
我们必须要使用字符 \ 来让他失去特殊意义才行
grep -n 'o\{2\}' regular_express.txt - 找到两个 o 的字串
grep -n 'go\{2,5\}g' regular_express.txt - g 后面接 2 到 5 个 o ,然后再接一个 g 的字串
grep -n 'go\{2,\}g' regular_express.txt - 2 个 o 以上的 goooo....g
扩展grep(grep -E 或者 egrep):
使用扩展grep的主要好处是增加了额外的正则表达式元字符集。
# egrep 'NW|EA' testfile
northwest NW Charles Main 3.0 .98 3 34
eastern EA TB Savage 4.4 .84 5 20
不使用正则表达式
fgrep 查询速度比grep命令快,但是不够灵活:它只能找固定的文本,而不是规则表达式。
fgrep '*' /etc/profile
如果你想在一个文件或者输出中找到包含星号字符的行
egrep 实用参数的更多相关文章
- JVM实用参数(五)新生代垃圾回收
本部分,我们将关注堆(heap) 中一个主要区域,新生代(young generation).首先我们会讨论为什么调整新生代的参数会对应用的性能如此重要,接着我们将学习新生代相关的JVM参数. 单纯从 ...
- JVM实用参数(四)内存调优
理想的情况下,一个Java程序使用JVM的默认设置也可以运行得很好,所以一般来说,没有必要设置任何JVM参数.然而,由于一些性能问题(很不幸的是,这些问题经常出现),一些相关的JVM参数知识会是我们工 ...
- JVM实用参数——新生代垃圾回收
JVM实用参数目录 JVM实用参数——新生代垃圾回收 概述 第1部分 新生代垃圾回收介绍 第2部分 参数介绍 参考 第1部分 新生代垃圾回收介绍 本部分,我们将关注堆(heap) 中一个主要区域, ...
- JVM实用参数(三)打印所有XX参数及值
JVM实用参数(三)打印所有XX参数及值 原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-3-printing-al ...
- JVM实用参数(一)JVM类型以及编译器模式
JVM实用参数(一)JVM类型以及编译器模式 原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-1-jvm-types ...
- JVM实用参数(二)参数分类和即时(JIT)编译器诊断
JVM实用参数(二)参数分类和即时(JIT)编译器诊断 作者: PATRICK PESCHLOW 原文地址 译者:赵峰 校对:许巧辉 在这个系列的第二部分,我来介绍一下HotSpot J ...
- JVM实用参数(七)CMS收集器
HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间.该目标对于大多数交互式应用很重要,比如web应用.在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器 ...
- JVM实用参数(八)GC日志
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数.GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配 ...
- JVM实用参数(六) 吞吐量收集器
在实践中我们发现对于大多数的应用领域,评估一个垃圾收集(GC)算法如何根据如下两个标准: 吞吐量越高算法越好 暂停时间越短算法越好 首先让我们来明确垃圾收集(GC)中的两个术语:吞吐量(through ...
随机推荐
- java 多线程面试
一.多线程的创建 1.多线程的创建 (1).继承Thread类 (2).实现Runnable接口 2.两种启动线程方法的区别 1.共同点 必须调用Thread 产生线程,然后调用start()方法 开 ...
- mac安装mysql8.0的错误
在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password.有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性 ...
- Android系统信息(内存、cpu、sd卡、电量、版本)获取
Android系统信息(内存.cpu.sd卡.电量.版本)获取 /*APPInfo.java*/ public class AppInfo { private String appLable; pri ...
- Eclipse开发时出现HTTP 403 错误(禁止访问)的解决方法
1. 打开项目的页面如下: 可以从tomcat log中发现Connection has been abandoned PooledConnection和Too many connections. 2 ...
- windows service 的错误 错误 14001:
1.Windows服务启动时报:“错误 14001:由于应用程序配置不正确,应用程序未能启动.重新安装应用程序可能会纠正这个问题.”的错误. 原因:Windows 服务程序 配置文件中 <a ...
- 移动端适配js
第一种.参考网易的 (我现在用这个多) https://www.cnblogs.com/well-nice/p/5509589.html var deviceWidth = document.docu ...
- Dubbo入门---搭建一个最简单的Demo框架
参考文档: https://blog.csdn.net/noaman_wgs/article/details/70214612/
- MySQL 命令行工具不能向表中插入中文的解决方法
1.报错图示 解释:sname这个字段 解析出错. 2.解决方法 打开MySQL的安装目录,找到my.ini文件,把57和81行的utf8改成gbk后 保存,最后,重启MySQL的服务 即可. 3.测 ...
- 从LeNet-5到DenseNet
一篇不错的总结:https://zhuanlan.zhihu.com/p/31006686
- java多线程快速入门(十)
synchonizd解决安全性问题 package com.cppdy; class MyThread6 implements Runnable{ private Integer ticketCoun ...