grep 简单使用

grep "关键字" file文件名 | tail -100|grep "关键字"  --col

grep的功能

grep从一个或多个文本文件中查找符合指定范本(正则表达式)的行,并把查找结果输出到指定设备(默认到屏幕)。

语法:

/usr/bin/grep [选项] <范本(正则表达式)> [文件1 ...]

范本是一个单独的词或者是一个用引号括起来的字符串。如果范本包含空格,则范本要用引号括起来。grep默认下把结果输出到屏幕但是并不影响或改变任何被查找的目标文件。
一些特殊字符($, *, [, ^, |, (, ), 和/)的使用要特别小心,因为这些字符在shell里有特殊意义。如果这些字符作为范本的一部份,请用单引号把整个范式括起来。

# grep root /etc/passwd /etc/shadow
/etc/passwd:root:x:0:0:Super-User:/:/sbin/sh
/etc/shadow:root:PdhpgiTZvqa2:13732::::::

备注:黑体部分是文件名

grep命令的输入

grep有三种输入来源:标准输入(键盘)、管道和文件。如果你忘了输入目标文件,grep会假定从标准输入设备(键盘)取得输入,直到你按^D(Control+D)。如果是管道,上个命令的输出将被作为grep的输入被处理,并把查找结果输出到指定输出设备。

global$grep mypattern
hello grep
I forget input file(s)
^D
global$

global$ ps -ef | grep root

global$ grep root /etc/passwd /etc/shadow

grep命令的返回值(不是查找结果)

### 0 (范本在指定文件里被查找到。)
global$grep root /etc/passwd;echo $?
root:x:0:0:Super-User:/:/sbin/sh
0

### 1 (范本在指定文件里没有查找到)
global$grep roo1t /etc/passwd;echo $?
1

### 2 (指定的目标文件不存在)
global$grep root /etc/passwd1;echo $?
grep: can‘t open /etc/passwd1
2

备注:Bourn/Korn shell变量,?,返回最后被执行的命令的返回值;C shell变量是status。

grep命令的选项

选项 描述
-c 显示符合范本的行的数目而不是显示满足条件的行的内容
-h 不显示文件名
-i 忽略大小写
-l 只列出有满足条件的行的文件的文件名
-n 显示满足条件的行在包含它的文件中的行号
-s 隐形操作,即如果出错不输出任何信息。在用于只检返回值时非常有用。
-v 反向显示,即输出不满足条件的行。

grep的正则表达式的元字符

元字符 功能 列子 描述
^ 行首 ‘^love‘ 匹配所有以love开始的行
$ 行尾 ‘love$‘ 匹配所有以love结尾的行
.(点) 匹配任意一个字符 ‘l..e‘ 匹配所有包含l,紧跟任意2个字符,再跟一个e的行
* 匹配0个或多个字符 ‘ *love‘ 匹配所有包含0个或多个空格,再跟love的行
[] 匹配一个在集合里的字符 ‘[Ll]ove‘ 匹配包含Love或love的行
[^] 匹配一个不在集合里的字符 ‘[^A-K]ove‘ 匹配不包含从A-K的字符,紧跟ove的行
/< 词首 ‘/<love‘ 匹配所有有任一单词以love为首的行
/> 词尾 ‘love/>‘ 匹配所有有任一单词以love为尾的行
/(../) 标识匹配的一个或多个字符 ‘/(love/)ing‘ 标识一个标注以期后面引用,第一个用/1,一次类推,最多有9个;见列子
x/{m/}
x/{m,/}
x/{m,n/}
重复字符x:m次
至少m次
在m次到n次之间
‘0/{5/}‘
‘0/{5,/}‘
‘0/{5,10/}
如果一个行有:连续5个0,至少连续5个0,连续的0在5到10之间,则满足要求。

例子

  • 查找在/etc下以p为首的文件中有那些行包含有root
# 、/usr/bin/grep root /etc/p*
/etc/passwd:root:x:0:0:Super-User:/:/sbin/sh
/etc/project:user.root:1::::
  • 输出所有的非空行
$ /usr/bin/grep . $HOME.profile

$ /usr/bin/grep ^$ /etc/passwd | wc -l (本命令统计/etc/passwd里有几行空行)

  • 输出/etc/passwd中包含root或者sys的行
$/usr/xpg4/bin/grep -e ‘root‘ -e ‘sys‘ /etc/passwd  或者
$/usr/xpg4/bin/grep -E ‘root|sys‘ /etc/passwd
root:x:0:0:Super-User:/:/sbin/sh
sys:x:3:3::/:

  • 输出所有行,此行包含这样的一个单词,它以小写字母打头,紧跟任意个字符,以n结尾
$ grep ‘/<[a-z].*n/>‘ /etc/passwd (注意.*,它表示任意个字符,包括空格)
  • 输出行,它包含一个3,紧跟着一个点和一个数字,再紧跟任意个字符(.*),再跟一个3(前面标识过了),一个或多个TAB,再跟一个3. 因为3前面被标识过,/(3/),所以后面引用只要用/1就可以了。
$ grep ‘/(3/)/.[0-9].*/1   */1‘ /etc/passwd

注:你可以替换3为任意你想要的其他字符

  • 输出行,这些行有单词至少包含9个连续的小写字母
$grep ‘[a-z]/{9,/}‘ /etc/passwd
  • 输出当前目录下文件名,这些文件包含有这样子的行,这些行包含有‘SE‘字符串,忽略大小写。
$ grep -l -i ‘se‘ *

egrep(扩展的grep)

元字符 功能 例子 描述
+ 匹配一个或多个前导字符 ‘[a-z]+ove‘ 匹配一个或多个小写字符,紧跟ove.如love,loove,alove
匹配0个或一个前导字符 ‘lo?ve‘ 匹配以l开始,紧跟零个o或者一个o,在跟ve.如lve,love
a|b 匹配a或者b ‘love|hate‘ 匹配love或者hate
() 分组 ‘lov(able|ly)?‘ 匹配lovable或者lovly,或者lov
  • 包含S,紧跟h或者u
$ egrep ‘S(h|u)‘ /etc/passwd
时间: 2024-10-21 08:42:18

grep 简单使用的相关文章

grep简单参数介绍

就我自己的所学所用在这里小结一下,供大家参考.(1)-v过滤,是指除去不要的留下想要的.例:[[email protected] tmp]# cat daweizong 111222333qqqrrr[[email protected] tmp]# grep -v "111" daweizong 222333qqqrrr注意:大家可以看到文件有的内容,加上-v之后就剩下咱们想要的了.(2)-i不区分大小写.例:[[email protected] tmp]# cat daweizong

grep简单用法及脚本基础篇

grep的基本选项说明 grep命令 选项说明: --color=auto:对匹配到的?本着?显?: -v:显?不被模式匹配到的?: -i:忽略字符??写: -n:显?匹配的?号: -c:统计匹配到的字符串: -o:仅显?匹配到的字符串: -q:静默模式,不输出任何信息: -A #:表?显?匹配到的?并显?该?后#?,#表?为数字: -B #:表?显?匹配到的?并显?该?前#?,#表?为数字: -C #:表?显?匹配到的?并显?该?前后各#?,#表?为数字: -e:实现多个选项的逻辑or或更新:

grep用法

grep简单正则用法 常用参数 -A:后面加数字,列出后续n行 -B:后面加数字,列出前面n行 -v:反向选择 -i:不分大小写 -n:显示行号 --color=auto:显示关键字颜色 grep -n '[^g]oo' 反向选择oo前面不能有g grep -n '[^a-z]oo' 反向选择oo前面不能有小写字母 ^$ 行首行尾 grep '^the' 文件名 the开头的行 grep -n '^[a-z]'   小写字母开头 grep -n '^[^a-zA-Z0-9]' 不已数字字母开头的

日志分析查看——grep,sed,sort,awk运用

概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题.本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段.(注:在linux环境下) 目录 0.查找关键日志grep 1.查找关键日志grep 2.精简日志内容 sed 3.对记录

grep命令参数和使用方法

功能说明:查找符合串的条件的文件. 语言 法国:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或文件夹...] 补充说明:grep 指令用于查找内容包括指定的范本样式的文件,假设发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来.若不指定

grep命令參数及使用方法

功能说明:查找文件中符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或文件夹...] 补充说明:grep 指令用于查找内容包括指定的范本样式的文件,假设发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来.若不指定

awk.sed.grep三剑客详解

事前准备1.主机node1:172.16.133.112.作为实验的文件/etc/passwd /etc/fstab qinqin cp /etc/passwd . cp /etc/fstab . 一.grep用法详解1.grep是干什么的grep的全名是Galobal research Regular Expression and Pringtiong,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的2.grep分类grep有基本正则表达式和扩展正则表达式之分,不过她们的作用域

grep 及 正则表达式

一.grep概念 grep,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的. 二.正则表达式: (1)正则表达式遵循的几个重复的操作 - ?                             最多匹配一次 - *                             匹配零次或者任意多次 - +                            匹配一次以上 - {n}                          匹配n次 - {n,}            

grep,sed,sort,awk运用

概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题.本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进来简述日志文件查看中一些有用的手段.(注:在linux环境下) 目录 0.查找关键日志grep 1.查找关键日志grep 2.精简日志内容 sed 3.对记录