正则表达式 笔记

重新复习的笔记

timg

文本处理工具

文本处理工具三剑客 之一grep

grep文本过滤工具 ,按行过滤

分为 grep egrep fgrep(不支持正则表达式)

centos 7和centos6 用的grep不一样是因为centos用到的是别名alias grep=’grep –color=auto’

grep 可以支持变量和命令

grep -v 显示不包含目标的行

grep -i 忽略大小写

grep -n 匹配目标的行号

cat -n匹配目标对的行号cat -n /etc/passwd |grep root

grep -c 匹配的行数

grep -o 只显示搜索字符串本身,不显示其他字符

grep -q 搜索的目标不显示,只关心包含不包含目标,不关心在什么行

&> /dev/null 不显示搜索信息

可以用echo?查看0 是成功 其他是错误

grep -A 包含目标的后几行 例 grep -A3 包含目标的后3行

grep -B 包含目标的前几行 例 grep -B3 包含目标的前几行

grep -C 包含目标的前后几行 例 grep -C3 包含目标的前后各3行

nmap 网络扫描 namp -v -sP 扫描特定的网段

centos 6 临时挂载 cd /misc cd cd/

grep root /etc/passwd |grep bash 并且的关系 先搜索root在搜索bash

grep -e 目标 -e 目标 或的关系例: grep -e root -e wang /etc/passwd 一行只包含root 或wang 不包含在一起

grep -w 匹配单词 例:echo x abc |grep -w abc

正则表达式 REGEXP regexp

正则表达式 写法灵活

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

正则表达式引擎 采用不同算法,检查处理正则表达式的软件模块 PCRE 居于perl语言的正则表达式,perl语言太灵活

正则表达式特定的字符 元字符 ,这些符号有特定的功能 。

元字符分为:字符匹配 ,匹配的次数 ,位置锚定 分组

字符匹配

. 点表示 一个字符串里的一个字符

[] 表示中括号里的任意一个字符

grep r[ab]t cat /etc/passwd 搜索rat 或rbt

匹配次数

*某一个字符出现的次数 ,包括0次

“`
* 例echo axxxb |grep x*b
“`

.* 任意长度的字符串

ls |grep .*\.txt 查找 .txt结尾的文件

\? 前面出现的字符出现一次或0次

例:echo aabccc |grep “a[b-z]\?c

\ + 前面的字符一个以上

\ { \ } 前面出现的字符出现多少次

“`
grep “go\{16\}” goohle.txt 前面的字符出现16次
grep “go\{16,\}” goohle.txt 前面的字符出现大于16次
grep “go\{,16\}” goohle.txt 前面的字符出现小于16次
“`

在中括号里的点就是点本身的意思

位置锚定

^行首锚定 grep “^root” /etc/passwd root开头的行

$ 行尾锚定 grep “bash$” /etc/passwd bash结尾的行

grep -v “^#” |grep “^$” 表示非#号开头的行

grep -v “^[[:space:]]*$” 只显示非空的行

\ < 单词词首 cat /etc/passwd |grep “\ <root” root在词首 rootwer

\ > 单词词尾cat /etc/passwd |grep “root\ >” root在词尾 wetroot

cat /etc/passwd |grep ” \ <root\ >

也可以写成 \b

分组

“`
echo zhouzhouzhou |grep “\(zhou\)\{3\} 希望单词出现多少次
“`

“`
cat /etc/passwd |grep -w “^\(.*\):.*/\1$” 查看用户和结尾相同的行
“`

(a|b) 表示a或b

“`
cat /etc/passwd |grep “^\(a\|b\).*” 查看a或b开头的行
“`

练习题

1、显示三个用户root、 mage、 wang的UID和默认shell

“`
cat /etc/passwd |grep -e “^root” -e “^mage” -e “^wang” |cut -d: -f 3,7
“`

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

“`
cat /etc/rc.d/init.d/functions |egrep “^(.*_)()”
“`

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

“`
echo /etc/rc.d/init.d/functions |egrep -o “^[^/].*$”
echo /etc/rc.d/init.d/functions |egrep -o “/(.*)/(.*)/”
“`

5、统计last命令中以root登录的每个主机IP地址登录次数

“`
last |grep “wang” |tr -s ” ” |cut -d” ” -f 3 |egrep -o “[0-9.]{7,}” |uniq -c
“`

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

“`
egrep -o “\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>”
“`

8、将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复
次数多的排到前面

“`
echo welcome to magedu linux |grep -o “.” |sort |uniq -c |sort -nr
“`

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

(0)
上一篇 2018-04-18 11:18
下一篇 2018-04-18 19:31

相关推荐

  • Linux用户和组

    我们知道Linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。由于是多用户操作系统,必然要涉及到时管理用户。由于用户访问Linux上的资源比较多,为了方便管理出现的组的概念.将多个用户添加到一个组里,方便管理。 介绍安全3A 资源分派: Authentication:认证 Au…

    Linux笔记 2018-04-08
  • TCP/IP协议三次握手与四次握手流程解析

    一、TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:   图1 TCP报文格式上图中有几个字段需要重点介绍下:(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,…

    2018-05-06
  • 第十次笔记

    自动化运维之自动化安装系统

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

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

    2018-07-07
  • Linux计算MD5和Sha1的命令

    Linux计算MD5和Sha1的命令

    Linux笔记 2018-06-07
  • 磁盘管理和网络管理

    磁盘管理和网络管理

    2018-04-23