首页 > 其他 > 详细

Part 3 grep正则表达式

时间:2018-12-30 23:16:13      阅读:220      评论:0      收藏:0      [点我收藏+]
Grep:

Linux文本处理三剑客

grep: 文本过滤(模式:pattern)工具

Sed: 文本编辑工具

awk:Linux上的实现gawk,文本报告生成器:

正则表达式引擎

选项:

-v: 显示不能够被pattern匹配到的行;

-q: 静默模式,不输出任何信息

基本正则表达式元字符

字符匹配:

.: 匹配任意单个字符:

[:digit:]、[:lower:]、[:upper:]、[:alnum:]、[:punct:]、[:space:]、[:alpha:]

匹配次数,用在要指定次数的字符后面,用于指定前面的字符要出现的次数:

*:匹配前面字符任意次

例如:grep "x*y"

abxy

Xay

.*: 任意长度的任意字符

\?: 匹配前面的字符0次或1次

+: 匹配其前面的字符至少1次

{m}: 匹配前面的字符m次

{m,n}:匹配前面的字符至少m次,至多n次

{0,n}; 匹配前面的字符至多n次:

{m,}: 匹配前面的字符至少m次

位置锚定

^: 行首锚定,用于模式的最左侧:

$: 行尾锚定:用于模式的最右侧

^PATTERN$: 用于模式匹配正行

^$: 空行:

^[[:space:]]*$

\<或\b: 词首锚定;用于单词模式的左侧;

\>或\b: 词首锚定;用于单词模式的右侧;

\<PATTERN\>: 匹配整个单词;

分组:

(): 将一个或多个字符捆绑在一起,当作一个整体进行处理:

(xy)*ab

示例:# grep "(xy)+" grep.txt

Note: 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,…

\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

(ab+(xy)*);

\1

后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)
技术分享图片

grep ‘^[Ss]‘ /proc/meminfo

  1. sort -t: -k3 -n /etc/passwd | tail -1 | cut -d: -f1

  2. grep "\b[0-9]{2,3}\b" /etc/passwd # grep "\b[[:digit:]]{2,3}\b" /etc/passwd

  3. grep "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg

  4. netstat -tan | grep "LISTEN[[:space:]]*$"

  5. grep "^([[:alnum:]]+\>).*\1$" /etc/passwd

grep "(^[[:alnum:]]+\>).*\1$" /etc/passwd

grep "^([[:alnum:]]+\>).*\1$" /etc/passwd

egrep = grep -E

扩展正则表达式的元字符

字符匹配:跟正则表达一样

次数匹配:

?: 0或1次

+:1次或多次

{m}: 匹配m次

{m,n}:至少m; 至多n次

锚定:

^

$

\<,\b

\>,\b

分组:

()

后向引用:\1,\2,…

或者:

a|b
技术分享图片

grep -E ‘^(root|centos|user1)\>‘ /etc/passwd

grep -E ‘^(root|centos|user1)\>‘ /etc/passwd | cut -d: -f1,3,7

grep -E -o "^[_[:alpha:]]+()" /etc/rc.d/init.d/functions

echo "/mnt/sdc" | grep -E -o "[^/]+/?$" | cut -d"/" -f1

进一步:使用egrep取出路径的目录名,类似于dirname命令结果,

fgrep: 不支持正则表达式搜索:

Part 3 grep正则表达式

原文:http://blog.51cto.com/yq1986/2337227

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!