linux基础命令(39) grep命令

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep的工作方式是这样的, 它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被 送到标准输出,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板 搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化 的文本处理工作。

1.命令格式:

grep [option] pattern file

2.命令功能:

用于过滤/搜索的 特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。

3.命令参数:

-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   #在显示符合样式的那一列之前,标示出该列的列数编号。

-q   - -quiet或--silent   #不显示任何信息。

-r   --recursive   #此参数的效果和指定“-d recurse”参 数相同。

-s   --no-messages   #不显示错误信息。

-v   --revert-match   #显示不包 含匹配文本的所有行。

-V   --version   #显示版本信息。

-w   --word-regexp   #只显 示全字符合的列。

-x    --line-regexp   #只显示全列符合的列。

-y   #此参数的效果 和指定“-i”参数相同。

4.规则表达式:

grep的规则表达式:

^ #锚定行的开始 如:'^grep'匹配所有以 grep开头的行。

$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。

.* #一起用代表任意字符。

[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

\(..\) #标记匹配字符,如'\(love\)',love被标记为1。

\< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。

\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。

x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。

x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。

\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。

\b #单词锁定符,如: '\bgrep\b'只匹配grep。

POSIX字符:

为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊 的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或 [[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

[:alnum:]    #文字数字字符

[:alpha:]    #文字字符

[:digit:]    #数字字符

[:graph:]    #非空字符( 非空格、控制字符)

[:lower:]    #小写字符

[:cntrl:]    #控制字符

[:print:]    #非空字符(包括空格)

[:punct:]    #标点符号

[:space:]    #所有空白 字符(新行,空格,制表符)

[:upper:]    #大写字符

[:xdigit:]   #十六进制数字(0-9,a -f,A-F)

时间: 2024-09-13 19:25:36

linux基础命令(39) grep命令的相关文章

grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令

grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令 我该怎样在 Linux.Apple OS X 及其他类 UNIX 系统中使用 grep 命令,你能给我展示一些简单的例子吗? grep 命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep 显示匹配到的行.使用 grep 来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行.grep 被视作在 Linux/ Unix 系统中最有用的命令之一. 你知道吗 grep 这个名字

Linux基础:如何在命令行中查看目录的大小

Linux基础:如何在命令行中查看目录的大小 这是写给Liunx新用户的一系列文章中的第一篇,在这系列文章我将会写一些对新用户来说非常好用的Linux基础命令. 注意:本文的目标读者是仅有小量甚至是没有任何Linux命令行使用经验的读者. 作为一个Linux的新用户,我怎样可以在命令行终端中查看某个目录的属性? 要求 唯一的要求是du命令行工具.du基本上是所有Linux发行版本默认提供的工具.用以下的命令来检查你的系统中是否可以使用du命令: man du du 命令用于输出文件的空间使用情况

Linux命令之grep命令使用介绍

  1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 2.格式 grep [options] 3.主要参数 [options]主要参数: -c:只输出匹配行的计数. -I:不区分大 小写(只适用于单字符). -h:查询多文件时不显示文件名. -l:查询多文件时只输出包含匹配字符的文件名. -n:显示匹配行

c/c++unix/linux基础学习笔记-常用命令和vi的使用

linux 基本命令的使用-命令在ubuntu下面执行,有些命令通用其他linux,有些不通用. 多条命令间用;号隔开,回车后可以一起执行. clear-前屏,pwd显示当前目录,cd跳转目录. sudo [命令]  -ubuntu 下以管理员身份运行命令. 一般情况下,运行当前目录下的程序,要用 ./文件名 执行. 查看当前shell名称:ps 进入另外一个shell,直接输入shell名称:ksh/tcsh/sh/bash,退出一个shell用:exit. 切换shell命令,如:exec

远程拷贝、查看端口、vim常见快捷键、查找替换命令、grep命令、查看存储空间的命令、chkconfig命令、系统自动启动级别、主机名配置、IP地址配置、域名映射、防火墙设置

2.1.远程拷贝 (将/export/servers/hadoop上的文件拷贝到bigdate@192.168.1.1:/export/servers/ ) scp –r /export/servers/hadoop bigdate@192.168.1.1:/export/servers/  上面的意思是说将 /export/servers/hadoop 拷贝到192.168.1.1这台服务器下的bigdate用户下的/export/servers/这个文件夹下 2.2.查看端口 netstat

Linux中快捷键的使用,who命令,rm命令,ps命令,cd命令,kill命令,find命令,grep命令,tar命令(gz、tar、bz2),用户管理,vim部分配置,相关命令

    1.进入Ubuntu之后打开终端窗口的快捷键是:           ctrl + alt+t:通过这个命令可以打开终端.          ctrl + alt+t:通过这个命令可以打开终端.     再开一个tab选项卡式的终端的快捷键是:ctrl+shift+t,切换还窗口的方式是:Alt+序号     另外也可以通过ctrl+shift+n的方式打开另外一种终端   2.关闭一个终端窗口的方式是:           Alt +F4,在Ubuntu下还可以是exit     3.

Linux下如何使用grep命令查找带有tab(退格)的字符_正则表达式

需要在日志文件统计删除的主帖,而日志文件是tab(退格)字符隔开的:假设日志文件名叫delete.log. 保存格式和保存的数据如下, 删除日期            帖子类型(11为主帖,12为回帖)    帖子id    操作人id  2011-11-01 00:05       12      71163578        1153089  2011-11-01 00:19       11      71163800        134379  2011-11-01 00:19   

Linux下如何使用grep命令查找带有tab(退格)的字符

需要在日志文件统计删除的主帖,而日志文件是tab(退格)字符隔开的:假设日志文件名叫delete.log. 保存格式和保存的数据如下, 删除日期            帖子类型(11为主帖,12为回帖)    帖子id    操作人id 2011-11-01 00:05       12      71163578        1153089  2011-11-01 00:19       11      71163800        134379  2011-11-01 00:19    

linux-shell脚本命令:grep命令简介

[ grep简介: ] grep是用来过滤含有特定字符的行, 能使用正则表达式搜索文本, 它在数据中查找一个字符串时, 是以正行为单位进行数据选取的. 用法: grep [cinvs] 'pattern' file 例如: grep -n 'bbb' aaa.txt --color # 从文件aaa.txt中搜索关键词bbb, 并显示行号和高亮显示. [ 常用选项: ] -c:只输出匹配行的计数. -i:不区分大小写(只适用于单字符). -n:显示匹配行及行号. -s:不显示不存在或无匹配文本的