zoukankan      html  css  js  c++  java
  • 正则表达式和文本处理工具

    一:整理正则表达式

        正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。

    ^ :行首
    $ :行尾
    . :除了换行符以外的任意单个字符
    *: 前导字符有零个到无穷个
    .*: 所有字符

    +:前导字符有一个到无穷个

    ?:前导字符有零个到一个

    x{m} x出现m次
    x{m,} x出现m次至多次(至少m次)
    x{m,n} x出现m次至n次

    [] 字符组内的任一字符
    [^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)
    ^[^] 非字符组内的字符开头的行
    [a-z] 小写字母
    [A-Z] 大写字母
    [a-Z] 小写和大写字母
    [0-9] 数字
    < 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词

    > 单词尾

    二:grep(正则表达式及字符处理)目标文件/etc/passwd,使用grep命令或egrep

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

    #grep 'root' passwd

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

     #grep 'bash' passwd

     #grep -C 2 'bash' passwd

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

    #grep -n 'nologin' passwd

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

    #grep -n 'root' passwd

    5.显示出文件中

    #grep -l 'root' /etc/passwd

    6.新建用户

    abominable;abominate;anomie;atomize

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

     #egrep '^a[a-z]+e' passwd

     7.建四个用户

    Alex213sb;Wpq2222b;yH438PIG;egon666;egon

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

    #egrep '^[a-Z]+[0-9]+[a-Z]+' passwd

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

    #egrep -rl 'root' /etc/* | grep 'root'

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

     #egrep -v '^$|^[#;]' /etc/ssh/sshd_config

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

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

    #sed -r 's/^(.)(.*)$/2/' /etc/passwd

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

    #sed -r 's/^(.)(.)(.*)/13/' /etc/passwd

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

    #sed -r 's/(.*)(.)$/1/' /etc/passwd

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

    #sed -r 's/(.*)(.)(.)$/13/' /etc/passwd

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

    #sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/124/' /etc/passwd

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

    #sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)$/134/' /etc/passwd

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

    #sed -r 's/([^a-Z]+)([a-Z]+)$/1/' /etc/passwd

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

    #sed -r 's/^(.)(.*)(.)$/321/' /etc/passwd

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

    #sed -r 's/^(.)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/42315/' /etc/passwd

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

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

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

    #sed -r 's/[0-9]//g' /etc/passwd

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

    #sed -r 's/^ *//g' /etc/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 -r 's/^([a-Z0-9]+)(.*)/1/' /etc/passwd

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

    #sed -r 's/^([a-Z0-9]+)([^a-Z])([a-Z0-9]+)([^a-Z])([a-Z0-9]+)([^a-Z])(.*)/15/' /etc/passwd

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

  • 相关阅读:
    JavaScript实现类的private、protected、public、static以及继承
    OSS网页上传和断点续传(STSToken篇)
    OSS网页上传和断点续传(OSS配置篇)
    Linq sum()时遇到NULL
    SQLSERVER事务日志已满 the transaction log for database 'xx' is full
    笔记本高分辨软件兼容问题,字体太小或模糊
    H5上传图片之canvas
    An error occurred while updating the entries. See the inner exception for details.
    无限级结构SQL查询所有的下级和所有的上级
    SQLserver 进程被死锁问题解决
  • 原文地址:https://www.cnblogs.com/Michael--chen/p/6601944.html
Copyright © 2011-2022 走看看