正则表达式 笔记

重新复习的笔记

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

相关推荐

  • Homework_week2

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类的命令 cd:变换目录 pwd:显示目前的目录 选项: -P:显示正确的完整路径,而非链接路径 mkdir:创建新目录 选项: -m:设置文件权限 -p:递归创建 rmdir:删除空目录 选项: -p:递归删除 文件与目录管理类的命令 ls:文件与目录的检视命令 常用选项…

    Linux笔记 2018-06-25
  • 学习笔记(19)

    学习笔记

    Linux笔记 2018-05-13
  • Docker容器二

    容器的虚拟化网络;

    2018-08-01
  • SSH端口转发及相关实验

    在上一节我们知道,SSH会自动加密和解密所有SSH客户端和服务器之间的网络数据。但是,SSH还同时提供了一个非常有用的功能,这就是端口转发。

    2018-05-22
  • Linux基础介绍、系统组成和获取命令帮助及系统目录说明

    一、描述计算机的组成及其功能 计算机由运算器、控制器、存储器、输入设备、输出设备组成1.运算器-主要是对数据进行各种运算(加、减、乘、除)2.控制器-计算机系统的控制中心,分配和协调整个计算机系统工作3.存储器-存储各种数据信息,以二进制形式存储,分为内存和外存4.输入设备-将数据、程序等信息输入到计算机中,例如键盘5.输出设备-将计算机的运算结果显示出来,…

    2018-06-23