linux中使用grep命令详解
Linux grep命令
Linux grep命令用于查找文件里符合条件的字符串;也可以用于查找内容包含指定的范本样式的文件。它能使用正则表达式搜索,用于在文件中搜索指定的字符串模式,列出含有匹配模式子符串的文件名,并输出含有该字符串的文本行。
grep的工作方式是这样的:它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
基本语法:
grep [options] pattern [files]
[options]的主要参数:
-a 或 –text : 不要忽略二进制的数据。
-A<显示行数> 或 –after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 –before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 –count : 计算符合样式的列数。
-C<显示行数> 或 –context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 –directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 –regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 –extended-regexp : 将样式为延伸的普通表示法来使用。
-f<规则文件> 或 –file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 –fixed-regexp : 将样式视为固定字符串的列表。
-G 或 –basic-regexp : 将样式视为普通的表示法来使用。
-h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 –ignore-case : 忽略字符大小写的差别。
-l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 –only-matching : 只显示匹配PATTERN 部分。
-q 或 –quiet或–silent : 不显示任何信息。
-r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。
-s 或 –no-messages : 不显示错误信息。
-v 或 –revert-match : 显示不包含匹配文本的所有行。
-V 或 –version : 显示版本信息。
-w 或 –word-regexp : 只显示全字符合的列。
-x –line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定”-i”参数相同。
-?:同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。
pattern正则表达式主要参数:
:忽略正则表达式中特殊字符的原含义。
^:匹配正则表达式的开始行。
$:匹配正则表达式的结束行。
<:从匹配正则表达式的行开始。
>:到匹配正则表达式的行结束。
[]:单个字符,如[A]即A符合要求。
[ – ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
.:所有的单个字符。
*:有字符,长度可以为0。
代码示例:
示例1:在当前目录中,查找前缀有“test”字样的文件中包含“test”字符串的文件,并打印出该字符串的行,此时,可以使用如下命令:
grep test test*
输出:
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
示例2:反向查找,通过”-v”参数可以打印出不符合条件行的内容。查找文件名中包含test 的文件中不包含test 的行
grep -v test *test*
输出:
testfile1:helLinux!
testfile1:Linis a free Unix-type operating system.
testfile1:Lin
testfile_1:HELLO LINUX!
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
testfile_1:THIS IS A LINUX TESTFILE!
testfile_2:HELLO LINUX!
testfile_2:Linux is a free unix-type opterating system.
- Pycharm使用技巧总结
- [基础]电话/手机常见验证的Javascript示例
- 按照Web Service方式调用WCF服务的问题
- 利用Lucene打造站内搜索引擎的思路
- Lucene.Net 删除索引DeleteDocuments的注意事项
- 使用VS2010的Database 项目模板统一管理数据库对象
- 利用c#制作托盘程序,并禁止多个应用实例运行
- dotNET跨平台相关文档整理
- .NET Core 2.0 正式发布信息汇总
- iis7.0上发布mvc4.0网站
- 遍历文件夹所有文件(示例)
- Visual Studio 2017 : client version 1.22 is too old
- httphandler和httpmodule的区别
- 每周.NET前沿技术文章摘要(2017-06-21)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- springMVC-MyBatis-Mysql 环境下, 返回时间格式不是指定格式
- 大话设计模式--第二章 策略设计模式
- 大话设计模式--第六章 装饰模式
- 大话设计模式--第七章 代理模式
- 数据库优化
- 获取jar包内部的资源文件
- Mac上sonar插件的安装及使用
- 一个ip, 两个域名, 两个ssl, 访问多个不同的项目
- 直接插入排序法——java语言实现
- Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在
- spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport
- 数据库优化 6. 启用MySQL查询缓存
- 正则表达式———通俗易懂———边讲解边举例
- git Lab ssh方式拉取代码失败
- 栈的应用之括号的匹配Java语言描述