grep命令以及正则表达式

grep,正则表达式

#文件本过滤
grep
– –color=auto
– v #取反
– i #忽略大小写
– n #显示行号
– c #统计行数
– o #只显示匹配模式的字符
– q #静默模式
– A #找到所有的匹配行,并显示匹配行后N行
– B #找到所有的匹配行,并显示匹配行前面N行
– C #除了显示符合范本样式的那1列之外,并显示该列之前后的N行
– e #grep -e root -e bash /etc/passwd,或者
– w #匹配整个单词
– f #grep -f p_file,文件中存放要过滤的模式[包含]
– E #扩展正则表达式
– F #当于fgrep,不支持正则表达式
#数字+字母; 下划线+字母,在grep中都算做是单词
#正则表达式 REGEXP
正则表达式:BRE
元字符:字符匹配、匹配次数、位置锚定、分组
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符
[:lower:] 小写字母 [
[:blank:] 空白字符(空格和制表符
[:space:] 水平和垂直的空白字符,[包含回车和TAB键]
[:cntrl:] 不可打印的控制字符
[:digit:] 十进制数字 [:
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* 匹配前面的字符任意次,包括0次
.* 任意长度的任意字符 #贪婪模式:尽可能长的匹配
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
#eg
echo axb |grep ax*b, echo axb |grep “ax*b”
echo “1a” |grep “[a-z]\+”
#.在中括号内,表示.本身,不需要转义
eg: echo “1.” |grep “[a-z.]\+”
ifconfig ens38 |grep -o “[0-9.]\{7,\}”
#取分区利用率
df |grep “sd[a-z]\+[1-9]\+” |grep -o “[0-9]\{1,3\}%” |grep -o “[0-9]\+” |sort -nr |head -n1
#位置锚定,对于grep的单词概念:字母、数字、下划线都算是单词
^
$
\< #锚定词首
\> #锚定词尾
\b,\b #表示词首或词尾
#分组
eg: echo “kingkingking” |grep “\(king\)\{3\}”
分组的引用:
\(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
eg: grep “^\(.*\):.*/\1$” /etc/passwd
echo “rootaarbbt” |grep ‘\(r..t\).*\1’
echo “rootaaroot” |grep ‘\(r..t\).*\1’
echo “rootaarbbt” |grep ‘\(r..t\).*\(r..t\)’
#或者
| #grep “^\(a\|b\).*” /etc/passwd
eg:
echo axy |grep “\(a\|b\)xy” #过滤axy或bxy
echo axy |grep “a\|bxy” #过滤a或bxy
扩展正则表达式:ERE
扩展正则表达式
次数匹配:
*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置锚定:
^ :行首
$ :行尾
\<, \b :语首
\>, \b :语尾
分组:
()
后向引用:\1, \2, …

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95398

(1)
凢洣阳光凢洣阳光
上一篇 2018-04-08 16:00
下一篇 2018-04-08 16:08

相关推荐

  • sell 进阶

    删除shell函数:命令格式:unsrt function_name 创建函数:例 function func2 { echo fun2;}   fork  炸弹;:(){ :|&};: 脚本: cat  Bomb.sh #!/bin/bash ./$0./$0& 信号捕捉 trap ‘ehcho trap 15&#82…

    2018-05-10
  • 交换分区swap管理及特殊介质的使用

    本节索引 一、交换分区swap管理 二、Linux系统光盘使用 三、Linux系统USB介质使用 四、强大的dd工具 一、交换分区swap管理: 交换分区是系统RAM的补充,相当于Windows系统中的虚拟内存,当系统RAM不够用的时候将使用交换 分区来代替内存使用。 基本设置包括: 创建交换分区或者文件 使用mkswap写入特殊签名 在/etc/fstab…

    2018-04-25
  • 在CentOS7上编译安装apache 2.4源码包,并启动此服务

    1 关闭firwalld systemctl stop firewalld systemctl disable firewalld 2 关闭SElinux setenforce 0 vim /etc/selinux/config 找到以SELINUX开头的那行,修改成SELINUX=disabled 以下就是脚本里的内容,执行就OK了 yum groupin…

    Linux笔记 2018-04-22
  • SSH协议及基于SSH集群key认证实验

    本节索引: 一、SSH协议相关概念 二、实验:实现基于key登录认证 三、实验:实现多台机器间互相基于key登录认证 四、实验:实现100台机器基于key登录验证 五、实验:利用pssh工具实现集群操作 一、SSH协议相关概念 SSH:secure shell,protocal,22/tcp,安全的远程登录; 利用 SSH 协议可以有效防止远程管理过程中的信…

    2018-05-19
  • 8. systemd的新特性及awk用法

    1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理
    2、描述awk命令用法及示例(至少3例)
    3、描述awk函数示例(至少3例)

    2018-07-07