【one day one linux】grep工具
grep 筛选功能
学习这些命令采用20/80原则,这样,可以达到使用%20的命令选项,处理80%的情况。
#grep 的使用格式
grep [option] pattern file
那么接下来看看我自己选择的一些grep的命令选项:
-c 计算符合范本的列数
-i 忽略pattern中的大小写
-w 忽略大小写,并搜索整个词汇
-r 递归的搜索所在目录的所有子目录
-v 查找和pattern不匹配的行
-n 打印出匹配行的行号
--color=auto 将pattern在匹配行中高亮
-A 后面加上数字,为after的意思,表示后续的n也列出来
-B 后面加数字,为before的意思,便是前面n行也列出来
grep的基本使用
这里我在.bashrc 加入了一个命名别名:alias grep=grep --color=auto
#输出last中有某用户名的一行
>># last | grep 'panhao'

很多时候grep用于管道之后,pattern部分可以使用引号引起来,也可以不用
#-v参数使用
>> # last | grep -v panhao

#用dmesg列出内核信息,再以grep找出内含eth的那行
dmesg | grep 'eth'

#显示行号的grep
dmesg | grep -n 'eth'

#参数 -A -B的使用
dmesg | grep -n A1 B2 'eth'
以上是grep的基本用法,后面还有grep与正则表达式的结合
- 基础正则表达式
1.特殊字符
| ^string | 意义:待查找的字符串在行首(以string开头的) |
| string$ | 意义:待查找的字符串在行尾(以string结尾的) |
| . | 意义:代表一定有一个任意字符的字符在该位置 |
| \ | 意义:转义字符,将命令中的特殊字符去除 |
| * | 意义:重复零个或者多个前一个字符 |
| [list] | 意义:选取待查找的字符(比如:[afl]代表"a"或者"f"或者"l") |
| [n1-n2] | 意义:代表n1到n2的字符集合(注意:这个表达式和bash使用的编码有关,后面会提到) |
| [^list] | 意义:反向查找,没有list字符集合的字符串 |
| \{n,m\} | 意义:连续n到m个前一个字符。若为\{n\}则是连续n个前一个字符,若为\{n,\}则为连续n个以上的字符。 |
2.编码语系对正则表达式的影响
先看两种语系下字符集的差别
- LANG=C 时:0 1 2 3 4 ... A B C D ... Z a b c d ... z
- LANG=zh_CN时:0 1 2 3 4 ... a A b B c C d D ... z Z
从上面的编码的顺序很容易看出两种编码的差别。所以同一个正则表达式在两种编码下就会存在差异:
[A-Z] 在LANG=C时,是正常的意思,在LANG=zh_CN时,代表A b B c C d D ... z Z,就会出现并不是我们想要的字符。
所以我们可以使用下面一些特殊字符来表示意思。
这里只列出几个常用的就行:
[:alnum:] 代表英文大小写字符,及数字
[:alpha:] 代表任何英文字符 a-z A-Z
[:upper:] 代表大写字母 A-Z
[:lower:] 代表小写字母 a-z
[:digit:] 代表数字 0-9
3.接下来是grep的一些高级参数
grep可以使用正则表达式来筛选自己需要的字段。
(1)使用"[]"来查找集合字符
如果我想要查找test和tast这两个单词,可以使用正则表达式如下:
# grep -n 't[ae]st' file
如上所示,根据这两个单词的共同点,把不同的地方用"[]"字符集合表示。
集合可以使用反向选择符等一些符号来丰富命令。
比如:
#使用方向选择符,和a-z表示所有的小写字母
# grep '[^a-z]oo' file #也可以变为之前跟编码无关的符号 [:lower:],如下
# grep '[^[:lower:]]oo' file
(2)行首符号"^"和行尾符号"$"
这里注意区分行首符号与反向选择符号的区别,区别在于是否在中括号[]中,在中括号的是反向选择符号,没有在的是行首符号
比如我们选择行首有"the"的
# grep -n '^the' file # 下面写一个既有反向选择又有行首的grep
# grep -n '^[^[a-zA-Z]]' file
#行尾的例子:找出行尾为"."结束的,因为"."在这里有特殊的含义,所以需要使用转义字符
# grep -n '\.$' file #寻找空白行
# grep -n '^$' file #只有行首和行尾的就是空白行
(3)任意一个字符"." 与重复字符"*"
"." 小数点:代表一定有一个任意字符的意思。
"*"星号:代表重复前一个字符0到无穷大次。 (请特别注意这里,它是可以重复0次的)
如下:
# grep -n 'g..d' file #可以匹配到 good glad 等一些字符串 # grep -n 'o*' file #执行这一句你会发现,打印出了所有的行。因为可以是0个“o”
那么当我们需要重复某个字符至少多次可以像这样写,"ooo*" 这代表至少重复两次以上。
(4)限定字符范围 {}
因为{}在shell中是有特殊用途的,所有在使用的时候需要加上转义符号"\",使其变为一般的{}
# grep -n 'o\{2\}' file #两个o的字符
# grep -n 'go\{2,5\}gle' #代表后面接2-5个o字符
# grep -n 'gp\{2,\}g' file #代表两个以上
参考boke:
每天一个linux命令(39):grep 命令
如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
【one day one linux】grep工具的更多相关文章
- linux中grep工具
正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...
- Linux小工具的应用,grep,sort,wc,cut
小工具的使用: 1.管道(|):连接多个命令的工具,进程之间通讯的一种方式 用法:命令1 | 命令2 | 命令3....2.grep工具:行过滤,打印出的结果一行一行的 用法:grep options ...
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- Linux性能工具介绍
l Linux性能工具介绍 p CPU高 p 磁盘I/O p 网络 p 内存 p 应用程序跟踪 l 操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l 应用程序的性能问题/功能问 ...
- linux grep命令详解
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
- linux shell工具集合
1)判断进程是否存在,如果不存在再执行启动命令,可以避免一个脚本同时启动多份 if [ $(ps -ef |grep bastion_account.sh|grep -v grep|wc -l) - ...
- linux grep命令总结
风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园 首页 新随笔 联系 订阅 管理 posts - 791, comments - 394, trackba ...
- Linux/Unix工具与正则表达式的POSIX规范
http://www.infoq.com/cn/news/2011/07/regular-expressions-6-POSIX 对正则表达式有基本了解的读者,一定不会陌生『\d』.『[a-z]+』之 ...
- 使用linux perf工具生成java程序火焰图
pre.cjk { font-family: "Nimbus Mono L", monospace } p { margin-bottom: 0.1in; line-height: ...
随机推荐
- 05String字符串课后作业
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 由此可得出,用加号连接的字符串和一整个字符串相同代码判断是true,而新开辟空间的不 ...
- 关于 myBatis 中的 jdbcType的细节问题
前几天上线了一个 版本,第二天到公司的时候,在cat上发现了一个长sql查询非常耗时,几乎把线上的项目搞崩溃了.我马上开始排查问题.最终发现 球队的ID传过来的时候是String 类型的,但是在执行s ...
- linux的文件权限小结
对于初接触Linux的朋友来说,会有各种不习惯和各种昏头,文件的权限就很让人不知所措. ls命令以及字段含义 比如我们列出当前目录文件: 我们来看下上述大致含义: 第1行显示的信息: 总用量(tota ...
- 2764: [JLOI2011]基因补全
2764: [JLOI2011]基因补全 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 570 Solved: 187[Submit][Status ...
- 很污的机器学习:从xhamster网站找到喜欢的片子
前言 最近迷上了看黄片(大雾).每次总是去搜索想看的片子,什么asian porn anal pussy 什么的我都不知道. 搜索着搜索着我手也累了,而且我喜欢的片子也是有一定的特征的,我不想把所有的 ...
- HTML超文本标记语言-基础标签整理
第一章 <META>标签: <meta http-equiv="Content-Type" Content="text/html;charset=gb2 ...
- CSS限制字数,超出部份显示点点点...
最近项目中需要用CSS实现限制字数,超出部份显示点点点...,只需要一下代码即可: width:400px;/*要显示文字的宽度*/ text-overflow :ellipsis; /*让截断的文字 ...
- QT Creator 快速入门教程 读书笔记(一)
一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows.Linux.Mac OS X.Android.iOS.Windows Phone.嵌入式系统等.也就是说,Qt 可以同时支持桌 ...
- rsync (windows 服务端,linux客户端)将windows上的数据同步到linux服务器,反之也可
一:总体概述. 1.windows上面首先装CW_rsync_Server.4.1.0_installer,安装时要输入的用户名密码要记住哦!接下来就是找到rsyncd.conf进入配置细节 2.li ...
- iOS开发之Xib和storyboard对比
相同点: (2)都用来描述软件界面 (2)都用Interface Builder工具来编辑 不同点: (1)Xib是轻量级的,用来描述局部的UI界面 (2)Storyboard是重量级的,用来描述整个 ...