day11 grep正则匹配

Posted 何必从头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day11 grep正则匹配相关的知识,希望对你有一定的参考价值。

ps aus | trep nginx     # 查看所有正在运行的nginx任务

别名路径:
    alias test_cmd=\'ls -l\'
PATH路径:
    临时修改:
        PATH=$PATH:/usr/local/nginx/sbin
        export PATH
        
            将ngxin路径放入PATH中
        每次切换用户,都会读取该用户家目录中的/home/[user]/.bashrc文件,所以,如果把命令写到这个文件中,那么这个用户就可以执行它
        
    永久修改:
        /etc/bashrc    # 在这里面修改,可以作为全局变量,只要开启shell就会执行这个文件
        /etc/profile   # 在这里面修改,可以作为全局变量,只要登录就会加载这个文件
        
        
    export [变量] 使[变量]可以作用于该程序的所有子程序
    
通配符:
    ; 接受过个命令,不管命令结果,依次接受
    $? 取上一次命令成功的结果,如果是0表示执行成功,非0,表示执行事变
    : 执行结果永远为真
    ? 表示任意一个字符

正则表达式:
    grep 命令 + 正则表达式:
        -n 显示行号
        -q 主要用来判断这条任务有没有成功,可用来验证文件中是否包含内容
        -l 显示路径
        -rl 递归着去文件中查找子文件,并显示文件名
        -A 2 匹配行的后两行
        -B 2 匹配行的前两行
        -C 1 匹配行的前后一行
        -i 忽略大小写
        -o 只显示匹配的内容
        -v 取反
        -w 过滤单词,可以找到用空格或其它符号分开的单词
        
        
正则表达式:
    grep普通的查找,如果不行,就换egrep扩展正则
        ^ 行首,如: \'^hello\'
        $ 行尾,如: \'hello$\'
        . 除了换行符以外的一个字符
        * 左面字符出现零次到无穷次
        grep -E \'(ab)*\' test.txt   查找多个或另个 ab 连续的,没有也算
        grep -E \'ab(ab)*\' test.txt  至少出现一个
        ? 左面字符出现零次或一次
        + 左面字符出现一次到无穷次
        {} 左面字符出现花括号中的次数
        {3,} 左面字符出现花括号中3到*次的次数
        .* 随意字符
        [0-9] 任意数字, [a-z] 左右小写字母, [A-Z] 所有大写字母, [a-Z] 所有字母, [^0-9] 除了0-9
        | 或者
        x\\{m\\} x出现m次
        x\\{m,\\} x出现m次至多次(至少m次)
        x\\{m,n\\} x出现m次至n次
        \'compan(y|ies)\'
        -v 非
        
        
shell script
    unset x   取消变量x
    PS1  这个变量可以修改浅慢的 root那啥的,就是那个输入命令的,前面的那个
    [ ] 可以比较大多数东西
    ((  ))  数字之间的比较
    
    
    

================================================================

 

作业二:grep作业(正则表达式及字符处理)

目标文件/etc/passwd,使用grep命令或egrep

1.显示出所有含有root的行:

[root@bogon ~]# egrep root /etc/passwd

 

2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:

[root@bogon ~]# egrep -C 2 bash /etc/passwd

 

 

 

3.  显示出有多少行含有nologin

[root@bogon ~]# egrep -c nologin /etc/passwd

 

4.显示出那些行含有root,并将行号一块输出。

[root@bogon ~]# egrep -n root /etc/passwd

 

 

6.新建用户

abominable

abominate

anomie

atomize

编写正则表达式,将他们匹配出来

[root@bogon sbin]# useradd abominable

[root@bogon sbin]# useradd abominate

[root@bogon sbin]# useradd anomie

[root@bogon sbin]# useradd atomize

[root@bogon sbin]# egrep \'^a(b|n|t)omi(nable|nate|e|ze)\' /etc/passwd

 

7.建四个用户

Alex213sb

Wpq2222b

yH438PIG

egon666

egon

 

过滤出用户名组成是字母+数字+字母的行

8.显示出/etc目录下所有包含root的文件名

9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行

[root@bogon sbin]# useradd Alex213sb

[root@bogon sbin]# useradd Wpq2222b

[root@bogon sbin]# useradd yH438PIG

[root@bogon sbin]# useradd egon666

[root@bogon sbin]# useradd egon

 

8.显示出/etc目录下所有包含root的文件名

[root@bogon sbin]# egrep -rl \'root\' /etc/

 

9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行

[root@bogon sbin]# grep -v \'#\' /etc/ssh/sshd_config | grep -v \'^$\'

 

 

作业三:

linux下源码安装python,并设置PATH

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz -P /root/Downloads/

 

解压

[root@bogon Downloads]# cd /root/Downloads/

[root@bogon Downloads]# tar -xzvf Python-3.6.1.tgz

 

安装

[root@bogon Downloads]# cd Python-3.6.1/

[root@bogon Python-3.6.1]# mkdir /usr/local/python3.6

[root@bogon Python-3.6.1]# ./configure --prefix=/usr/local/python3.6

 

[root@bogon Python-3.6.1]# make && make install

 

Installing collected packages: setuptools, pip

Successfully installed pip-9.0.1 setuptools-28.8.0

[root@bogon Python-3.6.1]# cd /usr/local/python3.6/

 

[root@bogon python3.6]# cd bin

加入环境变量

[root@bogon bin]# vim /etc/bashrc

 

windows下安装python,并设置PATH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于day11 grep正则匹配的主要内容,如果未能解决你的问题,请参考以下文章

Day 11 正则表达式

day11 正则表达式

day17-JavaScript正则表达式

day eleven 正则表达式以及shell基础学习

day23-正则|grep介绍

循环通过 python 正则表达式匹配