正则表达式 笔记

重新复习的笔记

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进程监控管理工具详解

    在上一节我们介绍了一些常用进程管理命令用法,但在实际生产环境运用时,我们可能需要动态持续的监控进程的运行状态,此时我们就需要top,htop,iotop、glances等命令工具来实现。

    2018-05-05
  • SSH协议及基于SSH集群key认证实验

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

    2018-05-19
  • 挂载点 文件通配符 目录的一些理解

    挂载点 挂载点实际上就是linux中的磁盘文件系统的入口目录,类似于windows中的用来访问不同分区的C:、D:、E:等盘符。其实Windows也支持将一个磁盘分区挂在一个文件夹下面,只是我们用C:、D:这样的盘符操作用惯了,一般没有将分区挂到文件夹。文件一般挂载在misc文件夹下 在我们打开Centos 6(并未登录)时在远程控制台是不能看到挂载点的如图…

    2018-04-01
  • 操作系统及Linux入门

    计算机的组成及其功能;
    Linux的发行版;
    Linux的哲学思想;
    linux入门命令介绍,如何获取帮助;
    基础目录名称命名法则及功用规定。

    Linux笔记 2018-05-21
  • 进入各种模式操作 在centos虚拟机上实现内外网的连接

      进入单用户模式; 重启后在下面界面按任意键 进入此界面后按“ a ” 在下面界面 输入  1   进入单用户模式  1之前有空格     进入救援模式 1 重启后将鼠标键入界面里,在第一个界面的进度条没走完之前按一次ESC键即可进入(只能按一次ESC) 2 选择上图中的第三项光盘引导启动,之后选择下图的第三项救援模式启动。 &nbsp…

    2018-05-09