Linux命令(八)过滤文本 grep
grep 命令介绍
grep是一个强大的文本搜索工具命令,用于查找文件中符合指定格式的字符串,支持正则表达式。如不指定任何文件名称,或是文件名为
-,则gerp命令从标准输入设备中读取数据。
grep家族包括grepegrep和fgrep。 egrep 和 fgrep 命令只跟 grep 有很小的不同。 egrep 是 grep 的扩展 , fgrep 就是 fixed grep 或 fast grep,该命令使用任何正则表达式中的元字符表示其自身的字面意义,不在特殊。其中 egrep 就等同于 " grep -E" ,fgrep 等同于"grep -F"。(有点晕。。) Linux中的 grep 功能强大,支持很多参数,可以方便地用来进行文本处理工作。
grep 命令常用参数说明
-a 不要忽略二进制数据
-A 除了显示符合条件的那一行之外,并显示该列之后的内容
-b 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号
-B 除了显示符合条件的那一行之外,并显示该列之前的内容
-c 计算符合结果的行数
-C 除了显示符合条件的那一行之外,并显示该列之前后的内容
-e 按指定的字符串查找
-E 按指定的字符串指定的正则查找
-f 指定范本文件,其内容含有一个或多范本样式
-F 将范本样式视为固定的字符串列表
-G 将范本样式视为普通的表示法来用
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H 在显示符合范本样式的那一列之前,标示该列所属的文件名称
-i 忽略字符大小写
-l 列出文件内容符合指定的范本样式的文件名称
-L 列出文件内容不符合指定的范本央视的文件名称
-n 在显示符合范本样式的那一列之前,标示出该列的列数编号
-q 不显示任何信息
-r 在指定路径中递归查找
-s 不显示错误信息
-v 反向查找
-V 显示版本信息
-w 匹配整个单词
-x 只显示全列符合的列
--help 在线帮助
grep 单独使用时至少有两个参数,如少于两个参数,grep 会一直等待,直到该程序被中断。如果遇到这样的情况,可以使用 Ctrl + c 终止。 默认情况下只搜索当前目录,如果递归查找子目录,可使用-r选项。
grep命令使用方法
在指定的文件中查找字符串:
grep root /etc/passwd 在 /etc/passwd 中查找 root 字符串
结合管道一起使用:
cat /etc/passwd | grep root
grep mysql my.cnf | grep datadir
查找符合条件的内容所在的行号:
grep -n root /etc/passed
在 nginx.conf 中查找包含 listen 的行号并打印出来:
grep listen nginx.conf
查找指定字符串:
grep uuid test.txt 区分大小写
grep UUID test.txt 区分大小写
grep -i uuid test.txt 不区分大小写
列出匹配字符串的文件名:
grep -l uuid test.txt
列出不匹配字符串的文件名:
grep -L uuid test.txt
匹配整个单词:
gerp -w UU test.txt
grep -w UUID test.txt
除了显示匹配的行,分别显示该行上下文的 n 行:
grep -C1 UUID test.txt 此处 n = 1 ,跟在 -C 参数后面
按正则表达式查找指定字符串:
grep -n -E "^[a-z]+" test.txt
grep -n -E "^[^a-z]+" test.txt
grep -E "datadir | socket" my.cnf
递归查找:
grep -r var . | head -3
在当前的目录下查找文件中的字符串hello:
grep -rn “hello”
grep 正则参数说明
^ 指定匹配字符串的行首
$ 指定匹配字符串的结尾
* 表示0个以上的字符
+ 表示1个以上的字符
\ 去掉指定字符的特殊含义
^ 指定行的开始
$ 指定行的结束
. 匹配一个非换行的字符
* 匹配零个或多个先前字符
[] 匹配一个指定范围内的字符
[^] 匹配一个不在指定范围内的字符
\(..\) 标记匹配字符
< 指定单词的开始
> 指定单词的结束
x{m} 重复字符 x,m 次
x{m}, 重复字符 x, 至少 m 次
x{m,n} 重复字符x, 至少 m 次,不多于 n 次
w 匹配文字和数字字符,也就是 [A-Za-z0-9]
b 单词锁定符
+ 匹配一个或多个先前的字符
? 匹配零个或多个先前的字符
a|b|c 匹配 a 或 b 或 c
() 分组符号
[:alnum:] 文字数字字符
[:alpha:] 文字字符
[:digit:] 数字字符
[:graph:] 非空格、控制字符
[:lower:] 小写字符
[:cntrl:] 控制字符
[:print:] 非空字符(包括空格)
[:punct:] 标点符号
[:space:] 所有空白字符(新行,空格,制表符)
[:upper:] 大写字符
[:xdigit:] 十六进制数(0-9,a-f,A-F)
Linux命令(八)过滤文本 grep的更多相关文章
- 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并 ...
- Linux命令(1)grep
开发过程中,与测试运维中 逐渐学习 运维常用的Linux 命令: 转自https://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Lin ...
- linux命令之查找find &grep
区别:find找目录下的文件:find+目录路径+条件表达式,grep找文件中的行:grep+匹配正则表达式+文件名 find命令 find命令的一般形式 find命令的常用选项及实例 find与xa ...
- <转>如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
原文链接:http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB) ...
- 转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或 ...
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等(转)
你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, ...
- 【转】Linux命令:ps -ef |grep java
转自:https://www.cnblogs.com/feizifeiyu/p/8492550.html 一.ps -ef |grep java 查看包含"java"的所有进程 二 ...
- Linux命令:ps -ef |grep java
一.ps -ef |grep java 查看包含"java"的所有进程 二.涉及命令详解 ps命令将某个进程显示出来(是LINUX下最常用的也是非常强大的进程查看命令) grep命 ...
- Linux命令(23)grep命令的使用
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...
随机推荐
- Moleskine智能笔+专用本:写完随时传到手机
http://www.totiot.com/61805.html Moleskine公司生产的速写本和速写板一直是涂鸦爱好者和速记员们的首选.该公司还联合Adobe. Livescribe. Ever ...
- PAT B1017 A除以B (20 分)
本题要求计算 /,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R成立. 输入格式: 输入在一行中依次给出 A 和 B,中间以 1 ...
- JAVA 框架hibernate (三)(数据库更新丢失)
一.场景: 我们在并发操作数据库同一个字段,比如:name:tom age:22这条数据.有2个同时进行操作.A操作该数据的name改成admin,B操作这条数据的age改成:35.然后A先把数据更 ...
- Leetcode——413. 等差数列划分
题目描绘:题目链接 题目中需要求解一个数组中等差数组的个数,这个问题可以利用动态规划的思路来分析. 三步骤: 1:问题归纳.题目需要求解等差数列的和,我们可以用一个数组保存前i个元素可以构成的等差数列 ...
- Arduino入门笔记(2):Arduino的开发和virtualbreadboard仿真环境
欢迎加入讨论群 64770604 1.开发环境 (1)下载开发环境 Arduino的开发环境从http://arduino.cc/en/Main/Software官网下载即可,分为windows版本. ...
- Android调用系统的打电话和发短信界面(1.将消息内容带过去2.实现群发)
package com.example.myapi.sms; import android.app.Activity; import android.content.Intent; import an ...
- day05今日学习总结:字符串类型
昨日学习复习: 数据类型: 有序.无序 有序:可以根据索引查找的数据 可变不可变 可变:在值变的情况下,id不变,证明原值是在改变的 不可变:在值变的情况下,id也跟着变,证明不是在改原值. 今日学习 ...
- AbelSu区块链应用场景收集
1.基于智能合约的众筹 众筹项目的资金通常由一个中心化不可变更且开放的数据库来控制,这个数据库可以追踪所有出资人. 虽然如此,我们可以用一种去中心化的方式来实现,而且只要创建一个代币就可以追踪资金.一 ...
- Android设备管理器漏洞(转)
一.漏洞描述 目前被称为“史上最强Android木马”的病毒Backdoor.AndroidOS.Obad.a利用Android设备管理器漏洞使用户无法通过正常方式卸载.其实该漏洞早在去年底已被发现. ...
- c# HttpWebRequest Cookie 设置到 webBrowser 控件
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...