Linux下grep入门

Linux下入门grep用法

1.grep简述及特点

  • 简介:全局搜索正则表达式出来的行并打印 (Global search REgular expression and Print out the line),一种按照特定模式(pattern)的文本过滤工具
  • 模式:pattern,通过有正则表达式(refexp)特殊字符以及文本字符组成的条件来过滤
  • 正则表达式:refexp,有一些bash支持的特殊文本字符来表示特殊含义,如果特殊字符当原本字符匹配需要转义

2.正则表达式分类

  • 基本正则表达式: BRE
  • 扩展正则表达式: ERE

3.grep 命令基础语法

grep [option] [refexp] file

–color 用特定的颜色高亮显示模式中匹配的字符串,一般为红色
-v 显示不被模式PATTERN匹配的行
-o 表示只显示被模式匹配的字符,而不是整个行
-q 静默模式不输出信息
-A # after 显示到匹配到的后 # 行
-B # before 显示到匹配的前 # 行
-C # context 显示匹配的前后各几行
-E 使用扩展正则表达式
基本和扩展的功能类似,只是转义方式不同

4.基本正则表达式

1.字符匹配

字符 字符说明
. 任意单个字符
? 匹配其前单个字符0或1次
* 匹配其前单个字符任意次
.* 匹配任意长度的任意字符
[] 表示匹配[]里的字符集,[ab]及包含a或b的字符
[^] 表示匹配除了[]里的其它任意字符,[^ab]及不包含a或b的字符

2.[]里所支持的特殊通配符:

字符 说明
[0-9] 表示单个0到9的数字
[:digit:] 表示所有数值,同上
[a-z] [:lower:] 表示单个小写字母
[A-Z] [:upper:] 表示单个大写字母
[:alpha:] [a-zA-Z] 表示单个字母
[:alnum:] 表示字母或数字
[:space:] 匹配空格
[:punct:] 表示所有标点符合
注意:在使用中,[::]这种格式[::]里带特殊单词的需要再加[]来表示,比如匹配空格则为‘[[:space:]]‘

3.次数匹配

字符 说明
\? 0次或1次
\+ 匹配其前字符一次以上
\{m\} 匹配其前字符m次
\{m,\} 匹配其前字符至少m次
\{m,n\} 匹配其前字符至少m次,至多n次

4.字符锚定

字符 说明
^ 行首锚定
$ 行尾锚定
^$ 表示空行匹配
\< 或 \b 行首锚定
\> 或 \b 行尾锚定
\\> 锚定匹配PATTERN的作为单词 \ \broot\b\>
\(\) : 对()里匹配PATTERN的做分组\1为后项引用前面第一个分组

扩展正则

1.用法

  • grep -E ‘PATTERN‘ [file]
  • egrep ‘PATTERN‘ [file]
  • 字符匹配和基本相同
  • 锚定和基本用法一样
  • 分组直接使用(),不要用\转义
  • 后项引用 \1 \2 \3

2.次数匹配

字符 说明
* 匹配前面字符任意次
? 0或1次。>=0
+ 1次以上。>=1
{m} 匹配多少次
{m,} 至少m次
{m,n} 至少m次,至多n次
{0,n} 至多n次

示例

1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)

grep -i ‘^s‘ /proc/meminfo
grep  ‘^[Ss]‘ /proc/meminfo
grep  -E  ‘^(s|S)‘ /proc/meminfo

2、显示/etc/passwd文件中不以/bin/bash结尾的行

grep  -v  ‘/bin/bash$‘  /etc/passwd

3、显示用户rpc默认的shell程序

 grep  ‘^\<rpc\>‘  /etc/passwd | cut -d: -f7

4、找出/etc/passwd中的两位或三位数

grep  ‘\<[0-9][0-9]\?\>‘  /etc/passwd
grep  ‘\<[0-9]\{2,3\}\>‘  /etc/passwd

5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

grep  ‘^[[:space:]]\+.*[^[:space:]]‘  /etc/grub2.cfg

6、找出"netstat -tan"命令的结果中以‘LISTEN‘后跟任意个空白字符结尾的行

netstat  -tan  ‘.*LISTEN[[:space:]]*$‘

7、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行

grep  ‘^\<\(.*\)\>.*/\1$‘  /etc/passwd
grep  ‘^\<\(.*\)\>.*\<\1\>$‘ /etc/passwd

8、显示当前系统root、mage或wang用户的UID和默认shell

grep -E ‘^(root|mage|wang)\>‘ /etc/passwd |cut -d: -f7

9、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

grep -E -o ‘^\<[[:alnum:]_]+\>\(\)‘ /etc/rc.d/init.d/functins

10、使用egrep取出/etc/rc.d/init.d/functions中其基名

echo "/etc/rc.d/init.d/functions" grep -E -o ‘[^/]+/?$‘

11、使用egrep取出上面路径的目录名

echo "/etc/rc.d/init.d/functions" | grep -E ‘/.*/‘

12、统计以root身份登录的每个远程主机IP地址的登录次数

last | grep -o ‘root\>.*\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]‘ | tr -s ‘ ‘| cut -d‘ ‘ -f3 | uniq -c

13、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

grep  -E  ‘\<([0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>‘

14、显示ifconfig命令结果中所有IPv4地址

ifconfig | grep -o ‘\(\([0-9]\|1[0-9]\|1[0-9]{2}\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\([0-9]\|1[0-9]\|1[0-9]{2}\|2[0-4][0-9]\|25[0-5]\)‘
时间: 2024-08-07 00:16:46

Linux下grep入门的相关文章

linux下grep、egrep及相应的正则表达式和用法

     linux下grep.egrep及相应的正则表达式和用法                       一.简介      Linux上文本处理三剑客(引用自马哥教育 ):  grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作:     sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:     awk:GNU awk,文本格式化工具:文本报告生成器:         grep (缩写来自Globally se

Linux下grep显示前后几行信息

Linux下grep显示前后几行信息 标准unix/linux下的grep通过下面參数控制上下文 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行grep -B 5 foo file 显示foo及前5行grep -A 5 foo file 显示foo及后5行 查看grep版本号的方法是grep -V 假 设想升级,升级的方法:最新的源代码(google或者百度搜索主页),编译安装到某个地方,比方 /home/aaa/bin/ 那么以后用的时候就用 /home

Linux下grep的基本过滤技巧

Linux下grep的基本过滤技巧 显示包含Orcl-Extract-Serv:63的字符串 tail -f /opt/apache/apache-tomcat-6.0.29/logs/catalina.out |grep Orcl-Extract-Serv:63 白名单过滤策略 显示包含Orcl-Extract-Serv:63或Orcl-Extract-Serv:62的字符串 tail -f /opt/apache/apache-tomcat-6.0.29/logs/catalina.out

Linux下grep命令详解

1.grep简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看

Linux下grep、tail、wc、awk文件处理命令

grep Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并匹配行打印出来. 命令语法: usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--l

linux下grep的用法

grep o:只打印匹配出来的字符n:显示行号v:取反l:匹配成功,打印文件c:统计匹配到的字符的数量,但是统计的是行数,而不是匹配的字符个数A:匹配行后几行B:匹配行前几行C:匹配行前后几行,  如    -C 2   与   -2i:忽略大小写q:静默执行,一般在测试时,取返回值用r/R:对一个目录下的所有文件进行搜索--color:用特殊颜色标示匹配到的关键字H: 列出匹配到关键字的文件路径 egrep:拓展正则搜索 egrep = grep -E # cat grep.txt ggleg

linux下grep文件内容搜索工具及基本正则表达式详解

grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选项] 匹配条件 文本名称 选项:  -i:  忽略大小写 -v: 显示没有被模式匹配到的行 -o:只显示被模式匹配到的字符串 --color: 搜索出来文件高亮度显示 -A: 匹配指定行的下几行 -B: 匹配指定行的上几行 -C: 匹配指定行的上下几行 -E: 扩展正则表达式 相当于egrep 正则表达式:Regular Expression, 简称REG

Linux 下 grep 命令常用方法简介

1.从单个文件中搜索指定的字符串: $ grep "literal-string" filename 该命令会输出字符串在文件中所在行的内容,如果字符串没有空格,则可以不加双引号.filename 可以是多个文件,每个文件用空格隔开. 加 -i 参数可以忽略大小写. 加 -u 参数搜索一个单词而不是搜索含该单词的字符串 2.显示匹配行附近的多行: -A 显示匹配行之后的n行 $ grep -A n "string" filename -B 显示匹配行之前的n行 $

Linux下grep命令

2.grep命令 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 2.1.grep命令的一般选项及实例 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] grep命令用于搜索由Pattern参