• 正则表达式和文本处理工具


    一:整理正则表达式

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

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

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

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

    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格式

  • 相关阅读:
    OD 实验(十三)
    第一个 Windows 界面程序
    C 语言
    C 语言
    OD 实验(十二)
    PowerShell 常用命令
    OD 实验(十一)
    OD 实验(十)
    redis
    memcached缓存系统
  • 原文地址:https://www.cnblogs.com/Michael--chen/p/6601944.html
Copyright © 2020-2023  润新知