马哥教育网络班22期第五周博客作业

正则表达式与grep

文本编辑工具

    grep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来;

    sed :是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用;

    awk :是一种编程语言,用于在linux/unix下对文本和数据进行处理;

grep使用

    grep [OPTION] PATTERN [FILE…]

    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

    选项:

        –color=auto:自动加颜色;

        -i :ignorecase,忽略字符大小写;

        -o :仅显示匹配道德字符串本身;

        -v :–invert-match:显示不能被模式匹配到的行;

        -E :支持使用扩展的正则表达式元字符;

        -q :不输出任何信息;

        -A<显示列数>:除了显示符合范本样式的那一行之外,并显示该行之后的内容;

        -B<显示列数>:在显示符合范本样式的那一行之外,并显示该行之前的内容;

        -C<显示列数>:除了显示符合范本样式的那一列之外,并显示该列之前后的内容;

正则表达式

    正则表达式,又称规则表达式。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式元字符

    (1)字符匹配:

        . :匹配任意单个字符;

        [] :匹配指定范围内的任意单个字符;

        [^] :匹配指定范围外的任意单个字符;

    (2)匹配次数:

        * :匹配其前面的字符任意次;

        .* :匹配任意长度的任意字符;

        \? :匹配其前面的字符至多1次;

        \+ :匹配其前面的字符至少1次;

        \{m\} :匹配其前面的字符m次;

        \{m,n\} :匹配其前面的字符至少m次,至多n次;

            \{0,n\} :匹配其前面的字符至多n次;

            \{m,\} :匹配其前面的字符至少m次;

    (3)位置锚定:

        ^ :行首锚定;

        $ :行尾锚定;

        ^PATTERN$ :用PATTERN来匹配整行;

            ^$ :匹配空白行;

            ^[[:space:]]*$ :包含空白字符的行或空行;

        单词:非特殊字符组成的连续字符;

            \<或<b :词首锚定;

            \>或\b :词尾锚定;

            \<PATTERN\> :匹配完整单词;

    (4)分组及引用:

        \(\) :将一个或多个字符当作一个整体;分组括号中的内容会被记录于内部变量中,可作为引用;

        后向引用:    

            \1 :引用第一个括号中匹配到的字符;

            \2 :引用第二个括号中匹配到的字符;

            … …


示例

1.显示当前系统上root、fedora或user1用户的默认shell;

# less /etc/passwd | egrep "^(root|fedora|user1)\>" | cut -d: -f1,7
root:/bin/bash
user1:/bin/bash
fedora:/bin/bash

或

# less /etc/passwd | grep "^\(root\|fedora\|user1\)\>" | cut -d: -f1,7
root:/bin/bash
user1:/bin/bash
fedora:/bin/bash

2.找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();

# egrep "\<[[:alnum:]]+\(\)" /etc/rc.d/init.d/functions
checkpid() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
success() {
failure() {
passed() {
warning() {
action() {
strstr() {

3.使用echo命令输出一个绝对路径,使用grep取出其基名;

扩展:取出其路径名;

# echo "/var/log/cron" | egrep -o "[^/]+/?$"

# echo "/var/log/cron" | egrep -o "^(/[^/]+)+/$"

4.找出ifconfig命令结果中的1-255之间数字

# ifconfig | egrep -o "[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]"

5.挑战题:写一个模式,能匹配合理的IP地址;

#ifconfig | egrep -o "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"

6.挑战题:写一个模式,能匹配出所有的邮件地址;

# egrep -o "[[:alnum:]]+\@[[:alnum:]]+\.[[:alnum:]]"

7.查找/var目录下属主为root,且属组为mail的所有文件或目录;

# find /var  -user root -a -group mail

8.查找当前系统上没有属主或属组的文件;

进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;

# find / -nouser -o  -nogroup

# find / \( -nouser -o -nogroup \) -atime -3

9.查找/etc目录下所有用户都有写权限的文件;

# find /etc -perm -222

10.查找/etc目录下大于1M,且类型为普通文件的所有文件;

# find /etc/ -size +1M -type f -exec ls -lh {} \

11.查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;

# find /etc/init.d/ -perm -113 -type f

12.查找/usr目录下不属于root、bin或hadoop的文件;

# find /usr/ -not \( -user root -o -user bin -o -user hadoop \)

13.查找/etc/目录下至少有一类用户没有写权限的文件;

# find /etc/ -not -perm -222

14.查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;

# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \)

原创文章,作者:N22-无锡-沉默,如若转载,请注明出处:http://www.178linux.com/48939

(0)
上一篇 2016-10-19 14:19
下一篇 2016-10-19 14:19

相关推荐

  • 使用keepalive实现nginx反向代理高可用

    简介: 在网站架构中,为了分散客户端对服务器的访问压力,可以使用nginx作为反向代理。但是使用一个nginx作为代理服务器必定会面对单点故障的情况,所以一般使用多台nginx反代服务器,而使用多台nginx服务器还要面对如何协调调度的问题。在此,我给大家介绍使用keepalive协调调度nginx反代服务器的方法。   keepalive简介 说…

    2017-05-15
  • linux之文本处理工具

    今天来聊一聊关于linux中处理shell的文本工具,主要说说以下命令:  · 文件查看命令:cat、tac、  · 分页查看文件内容:more、less  · 显示文本前行或后行内容:head、tail  · 按列抽取文本:cut  · 合并文件:paste  · 文…

    2017-07-29
  • 配置逻辑卷·设定LVM快照·btrfs文件系统

    _ueditor_page_break_tag_ 配置逻辑卷,设定LVM快照,btrfs文件系统                 逻辑卷管理器( LVM)v允许对卷进行方便操作的抽象层,包括重新设定文…

    Linux干货 2016-09-01
  • N22第六周作业

    VIM编辑器介绍 什么是VIM? Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。 Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 VIM的使用 &nbsp…

    Linux干货 2016-10-24
  • 第二周(8.15-8.21)博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 #touch 如果a.txt不存在,生成一个新的空文档a.txt。如果a.txt存在,那么只更改该文档的时间信息 #ls  是list的简写,列出当前目录下的所有文件名 #cp a.txt b.txt  cp是copy的简写,用来复制文件。在工作目录下,将a.t…

    Linux干货 2016-08-24
  • N25-第17周博客作业

    1、结合图形描述LVS的工作原理;     LVS (Linux Virtual Server)是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结…

    Linux干货 2017-05-21

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-25 13:36

    第二个问题看一下man grep的参数