• 正则表达式,grep,sed,


    答案详见:http://www.cnblogs.com/linhaifeng/p/6596660.html

    作业一:整理正则表达式博客

    ^ # 行首定位
    $ # 行尾定位
    . # 匹配除换行符以外的任意字符
    * # 匹配0或多个重复字符
    + # 重复一次或更多次
    ? # 重复零次或一次
    ? # 结束贪婪因子 .*? 表示最小匹配
    [] # 匹配一组中任意一个字符
    [^] # 匹配不在指定组内的字符
    # 用来转义元字符
    < # 词首定位符(支持vi和grep) <love> # 词尾定位符(支持vi和grep) love>
    x{m} # 重复出现m次
    x{m,} # 重复出现至少m次
    x{m,n} # 重复出现至少m次不超过n次
    X? # 匹配出现零次或一次的大写字母 X
    X+ # 匹配一个或多个字母 X
    () # 括号内的字符为一组
    (ab|de)+ # 匹配一连串的(最少一个) abc 或 def;abc 和 def 将匹配
    [[:alpha:]] # 代表所有字母不论大小写
    [[:lower:]] # 表示小写字母
    [[:upper:]] # 表示大写字母
    [[:digit:]] # 表示数字字符
    [[:digit:][:lower:]] # 表示数字字符加小写字母
     
    元字符
     
    d # 匹配任意一位数字
    D # 匹配任意单个非数字字符
    w # 匹配任意单个字母数字下划线字符,同义词是 [:alnum:]
    W # 匹配非数字型的字符
     
     
     
    字符类:空白字符
     
    s # 匹配任意的空白符
    S # 匹配非空白字符
     # 匹配单词的开始或结束
    # 匹配换行符
    # 匹配回车符
    # 匹配制表符
     # 匹配退格符
    # 匹配空值字符
     
     
     
    字符类:锚定字符
     
     # 匹配字边界(不在[]中时)
    B # 匹配非字边界
    A # 匹配字符串开头
     # 匹配字符串或行的末尾
    z # 只匹配字符串末尾
    G # 匹配前一次m//g离开之处
     
     
    捕获
     
    (exp) # 匹配exp,并捕获文本到自动命名的组里
    (?<name>exp) # 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
    (?:exp) # 匹配exp,不捕获匹配的文本,也不给此分组分配组号
     
     
     
    零宽断言
     
    (?=exp) # 匹配exp前面的位置
    (?<=exp) # 匹配exp后面的位置
    (?!exp) # 匹配后面跟的不是exp的位置
    (?<!--exp) # 匹配前面不是exp的位置
    (?#comment) # 注释不对正则表达式的处理产生任何影响,用于注释
     
     
     
    特殊字符
     
    http://en.wikipedia.org/wiki/Ascii_table
    ^H 10 
    ^M 15
    匹配特殊字符: ctrl+V ctrl不放在按H或M 即可输出^H,用于匹配
    --></name></love>

      


    作业二:grep作业(正则表达式及字符处理)
    目标文件/etc/passwd,使用grep命令或egrep
    1.显示出所有含有root的行:

    grep "root" /etc/passwd


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

    grep -C 2 "bash" /etc/passwd


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

    [root@python_lb yan]# grep -c "nologin" /etc/passwd


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

    [root@python_lb yan]# grep -n "root" /etc/passwd


    5.显示出文件中


    6.新建用户
    abominable
    abominate
    anomie
    atomize
    编写正则表达式,将他们匹配出来

    [root@python_lb yan]# egrep '^a[a-z]+e' passwd


    7.建四个用户
    Alex213sb
    Wpq2222b
    yH438PIG
    egon666
    egon

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

    [root@python_lb yan]# grep -Eni '^[a-Z]+[0-9]+[a-Z]+' passwd
    53:Alex213sb:x:1005:1005::/home/Alex213sb:/bin/bash
    54:Wpq2222b:x:1006:1006::/home/Wpq2222b:/bin/bash
    55:yH438PIG:x:1007:1007::/home/yH438PIG:/bin/bash


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

    [root@python_lb yan]# mkdir /etc/root
    [root@python_lb yan]# mkdir /etc/1root
    [root@python_lb yan]# mkdir /etc/root2
    [root@python_lb yan]# ls /etc/|grep root
    [root@python_lb yan]# ls /etc/*root*

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

    [root@python_lb yan]# grep -v "^$" /etc/ssh/sshd_config|grep -v "^#"


    作业三:Sed作业:以/etc/passwd文件为模板

    1,删除文件每行的第一个字符。

    [root@python_lb yan]# sed -r 's/^([a-Z0-9-])([a-Z0-9-]+)/2/g' passwd

    2,删除文件每行的第二个字符。

    [root@python_lb yan]# sed -r 's/^([a-Z0-9-])([a-Z0-9-])([a-Z0-9-]+)/13/g' passwd

    3,删除文件每行的最后一个字符。

    [root@python_lb yan]# sed -r 's/([a-Z]+)[a-Z]$/1/g' passwd

    4,删除文件每行的倒数第二个字符。

    [root@python_lb yan]# sed -r 's/^(.*)(.)(.)$/13/g' passwd

    5,删除文件每行的第二个单词。

    [root@python_lb yan]# sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/124/g' passwd
    [root@python_lb yan]# sed -r 's/^([a-Z0-9-]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/124/g' passwd

    6,删除文件每行的倒数第二个单词。

    [root@python_lb yan]# sed -r 's/([a-Z]+)([^a-Z]+)([a-Z]+)$/23/g' passwd

    7,删除文件每行的最后一个单词。

    [root@python_lb yan]# sed -r 's/([^a-Z]+)([a-Z]+)$/1/g' passwd

    8,交换每行的第一个字符和第二个字符。

    [root@python_lb yan]# sed -r 's/(^[a-Z])([a-Z])/21/g' passwd

    9,交换每行的第一个字符和第二个单词。

    [root@python_lb yan]# sed -r 's/(^[a-Z])([a-Z0-9-]+)([^a-Z]+)([a-Z]+)/4231/g' passwd

    10,交换每行的第一个单词和最后一个单词。

     
    sed -r 's/([a-Z]+)(.*)([^a-Z]+)([a-Z]+)$/4231/' passwd

    11,删除一个文件中所有的数字。

     sed -r '/[0-9]+//g' passwd

    12,删除每行开头的所有空格。

     sed -r 's/^ *//g' passwd

    13,用制表符替换文件中出现的所有空格。

     sed -r 's/ / /g' /etc/passwd

    14,把所有大写字母用括号()括起来。

    sed -r 's/[A-Z]/(&)/g' /etc/passwd
     


    15,打印每行3次。

     sed 'p;p' /etc/passwd

     

    16,只显示每行的第一个单词。

    sed '1~2d' /etc/passwd
     

    17,打印每行的第一个单词和第三个单词。

    18,用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式

     

     

  • 相关阅读:
    STL中关于map和set的四个问题?
    PHP之Zip扩展,解压缩文件,ZipArchive类
    PHP之音乐ID3扩展
    关于PHP执行超时的问题
    PHP中GD库安装
    PHP之输出控制 ob_start(),ob_get_contents(),ob_end_clean()
    PHP之xdebug详解
    PHP上传文件详解
    php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证及缺点
    深入研究php://input与php://output
  • 原文地址:https://www.cnblogs.com/Baby-Lady/p/6600054.html
Copyright © 2020-2023  润新知