Linux的文本处理工具grep及初识正则表达式

一)、Linux的三大文本处理之GREP:

GREP(Global search REgular expression and Print out the line,全面搜索正则表达式并把行打印出来):在给出文件列表或标准输出后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。----摘自于维基百科

GREP家族包括:

grep:

egrep:支持扩展正则表达式的grep,等同于grep -E。

fgrep:fixed grep或fast grep,不支持正则表达式。



二)、语法格式:

grep [option]... ‘PATTERN‘ FILE...

注意:以字符串逐行查找。

常用命令选项:

-v:反向选取,即显示不匹配的行。

-o:仅显示匹配的字串,而非字串所在的行。

-i:ignore-case,忽略字符大小写。

-E:支持使用扩展正则表达式。

-A #:显示匹配行及下#行。

-B #:显示匹配行及上#行。

-C #:显示匹配行及上下#行。

--color=auto:匹配到的字符串显示颜色。



三)、正则表达式:

Regular Expression,在代码中常简写为regex、regexp或RE,计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。----摘自于维基百科



四)、元字符:

1)、字符匹配:

.:匹配任意一个单个字符

[]:匹配一个指定范围内的字符

[^]:匹配一个不在指定范围内的字符

[:digit:]:数字字符,即[0-9]

[:lower:]:小写字符,即[a-z]

[:upper:]:大写字符,即[A-Z]

[:alpha:]:文字字符,即[A-Z,a-z]

[:alnum:]:文字数字字符,即[A-Z,a-z,0-9]

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

[:punct:]:标点符号

[:space:]:空白字符

[:graph:]:非空白字符

[:cntrl:]:控制字符

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

2)、次数匹配:

*:零次或多次先前字符。

.*:任意次任意字符

\?:零次或一次先前字符。

\{m\}:先前字符重复m次。

\{m,n\}:先前字符m到n次。

x\{m,\}:先前字符至少m次。

x\{0,n\}:先前字符至多n次。

3)、位置锚定:

^:行首锚定。

$:行尾锚定。

^$:空白行。

\<,/b:锚定词首,出现于单词左侧。

\>,\b:锚定词尾,出现于单词右侧。

\<..\>,\b..\b:单词锁定符。

4)、分组和引用:

\(..\):

分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用。

\#:

引用第n个括号所匹配到的内容,而非模式本身。



五)、扩展正则表达式

1)、字符匹配:

与基本正则表达式相同。

2)、次数匹配

与基本正则表达式相同,且无需转译。

+:一次或多次先前字符。

a|b:分支,a或b,

con(C|c)at:concat或conCat

conC|cat:conC或cat

3)、位置锚定:

与基本正则表达式相同。

4)、分组和引用

与基本正则表达式相同,分组无需转译。



六)、实例说明:

01、显示/proc/meminfo文件中以大写或小写S开头的行。

#grep --color=auto -i ‘^s‘ /proc/meminfo
#grep --color=auto -E ‘^(s|S)‘ /proc/meminfo

02、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户。

#grep --color=auto -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

03、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

进一步:仅显示上述结果中其ID号最大的用户。

#grep --color=auto "/bin/bash$" /etc/passwd | sort -t: -k3 -n | tail -n 1 | cut -d: -f1,3,7

04、找出/etc/passwd文件中的一位数或两位数。

#grep --color=auto "\<[[:digit:]]\{1,2\}\>" /etc/passwd

05、显示/boot/grub/grub.conf中以至少一个空白字符开头的行。

#grep --color=auto "^[[:space:]]\{1,}" /boot/grub/grub.conf

06、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行。

#grep --color=auto "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit

07、找出netstat -tan命令执行结果中以‘LISTEN‘结尾的行。

#netstat -tan | grep --color=auto "LISTEN[[:space:]]*$"

08、添加用户bash、testbash、basher、nologin(SHELL为/sbin/nologin),而找出当前系统上其用户名和默认shell相同的用户。

#grep --color=auto "^\([[:alpha:]]\{1,\}\):.*/\1$" /etc/passwd

09、显示当前系统上root、rhel或centos用户的默认shell。

#grep --color=auto -E "^(root|rhel|centos):.*" /etc/passwd | cut -d: -f1,7

10、找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号"()"行

#grep --color=auto -E "\<[[:alpha:]]+\>\(\)" /etc/rc.d/init.d/functions

11、找出ifconfig命令结果中的1-255之间的数字;

#ifconfig | grep --color=auto -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

时间: 2024-10-14 00:01:03

Linux的文本处理工具grep及初识正则表达式的相关文章

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr

Linux下文本搜索工具grep命令使用入门

grep命令入门 如果想通过使用grep命令来实现理想化的文本搜索,对正则表达式的了解是比不可少的.文献1对正则表达式语法做了一个简单的介绍,文献2提供了一个简单的入门.码农也可以自己google一下其他的参考资料.下面就grep命令的使用做个入门级的介绍. 1.1 grep命令的变种 linux下除了grep命令可以完成文本搜索外,还存在egrep,fgrep,rgrep三个命令.这三个命令都是由grep加上一些控制参数演变而来,如egrep=grep -E, fgrep=grep -F, r

Linux之文本搜索工具grep

grep功能:根据模式搜索文本,并将符合模式的文本行显示出来 PATTERN:模式,即文本字符和正则表达式的元字符组合而成的匹配条件 1 通配符: *:任意长度的任意字符 ?:任意单个字符 []:匹配指定范围内的任意单个字符 [^]:与[]相反 2 正则表达式: 元字符: .:匹配任意单个字符 *:匹配次数(工作在贪婪模式下,尽可能长的匹配), 匹配其前面的字符任意个 .*:任意长度的任意字符 \?:匹配其前面的字符1次或0次 \{m,n\}:匹配其前面的字符至少m次,至多n次 \{1,\}:匹

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

Linux文本处理工具——Grep

Grep简介 全名:Global search Regular expression and Print out the line. 功能:文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行. Linux的三大文本处理工具之一,可以说学好grep命令无疑是重要的,可以说学好grep也是不容易的,因为grep里面要用到最烦人的正则表达式. grep语法格式 grep [option]... 'PATTERN' FILE... [option]:表示可以跟选项,

Linux学习汇总——Linux用户组管理,文件权限管理,文本处理工具grep及egrep

本章Blog相关Linux相关知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户库:/etc/passwd ,密码库 :/etc/shadow,组库:/etc/group,组密码库:/etc/gshadow 加密方法:对称加密--加密和解密使用同一个密码,如DES,AES :公钥加密--每个密码都成对出现,一个公钥,一个私钥,如DSA,RSA:单向加密--常用于数据完整性校

Linux的文本处理工具浅谈-awk sed grep

Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 [语法格式] awk [–F] [“[分隔符]”] [’{print$1,$NF}’] [目标文件] awk 'BEGIN{FS="[列分隔符]+";RS="[行分隔符]+";print "-GEGIN-"

15.自学Linux之路:文本处理工具grep,eprep和fgrep

文本处理工具grep,eprep和fgrep: grep:(global search regular expression and print out the line),全面搜索正则表达式,并显示相应的行 文本搜索工具:根据用户指定的文本模式对目标文件逐行搜索,显示能够被模式匹配的行 格式:grep  [options]  'PATTERN'  file,.....    文本过滤器 --color=auto:将匹配到的模式加上颜色 例:#grep  --color=auto  Boot  

正则表达式及Linux三大文本处理工具

一.正则表达式 1.匹配字符的类型 [a-z]:小写字母 [A-Z]:大写字母 [a-Z]:小或大写字母 [0-9]:数字 [a-zA-Z0-9]:表示匹配一个为字母或数字的字符 . :匹配1个任意字符,空格除外 [0-f]:16进制数 abc | def:abc或def a (bc | de) f:abcf 或 adef \<:单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词 \>:单词尾 [^表达式]:除小写字母以外的所有字符,如此类推. 2.后跟以下符号控制匹配的数量 此类