• shell之正则


    正则表达式

    grep/egrep

    grep

    -c:打印符合要求的行数

    # grep -c 'halt' /etc/passwd

    1

    -C:后面跟一个数字,打印符合要求的行及上下两行

    # grep -C2 'halt' /etc/passwd

    sync:x:5:0:sync:/sbin:/bin/sync

    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    halt:x:7:0:halt:/sbin:/sbin/halt

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin

    -A:后面跟一个数字,打印符合要求的行及下面两行

    # grep -A2 'halt' /etc/passwd

    halt:x:7:0:halt:/sbin:/sbin/halt

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin

    -B:后面跟一个数字,打印符合要求的行及下面两行

    # grep -B2 'halt' /etc/passwd

    sync:x:5:0:sync:/sbin:/bin/sync

    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    halt:x:7:0:halt:/sbin:/sbin/halt

    -i:忽略大小写

    -n:打印符合要求的行及行号

    # grep -n 'halt' /etc/passwd

    8:halt:x:7:0:halt:/sbin:/sbin/halt

    -v:打印不符合要求的行

    # grep -v 'nologin' /etc/passwd

    root:x:0:0:root:/root:/bin/bash

    sync:x:5:0:sync:/sbin:/bin/sync

    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    halt:x:7:0:halt:/sbin:/sbin/halt

    例:

    过滤不包含数字的行

    # grep -v '[0-9]' /etc/inittab

    # inittab is no longer used when using systemd.

    #

    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

    #

    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

    过滤空行

    # vi /test.txt

    a

    a

    a

    a

    # grep -v '^$' /test.txt

    a

    a

    a

    a

    ^:行的开始

    $:行的结尾

    指定要过滤出的字符出现次数

    # grep 'o{2}' /etc/passwd

    root:x:0:0:root:/root:/bin/bash

    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin

    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    egrep

    过滤一个或者多个字符

    # egrep 'oo+' /etc/passwd

    rooooot:x:0:0:root:/root:/bin/bash

    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    operator:x:11:0:operator:/root:/sbin/nologin

    postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    grep所用的是*  egrep用的是+  grepegrep都是?

    egrep

    sed工具

    grep的功能只能实现查找sed(流式编辑器)工具能在屏幕上进行查找和修改。

    打印某行

    sed -n np filename -n表示我们要打印的行 ‘n’表示第几行)

    sed -n n,$’ filename (表示打印n行到最后一行,$表示最后,可以是别的数字进行打印这个区间)

    打印包含某个字符串的行

    sed -n /root/p /etc/passwd (打印包含root的行)

    sed -n /^root/p /etc/passwd  (打印以root开头的行,^表示开头)

    sed -e '1'p -e '/111/'p -n /222.txt (打印第一行和包含111的行,选项-e表示实现多个行为)

    删除某些行

    注:这里sed工具的d选项表示删除动作,可以删除指定的行数,也可以删除包含所指定的字符串的行,当然此处的删除只是不会显示在文档之上,文件的本身没有删除。

    sed '1'd /222.txt      (删除第一行)

    sed '1,5'd /222.txt    (删除1--5行)

    sed /111/d /222.txt  (删除带有111的行)

    替换字符或者字符串

    sed '1,2s/ot/to/g' /222.txt (表示将第一行和第二行的to替换味ot,这里的s表示进行替换的动作,g表示进行全局替换,如果没有g就会只替换本行出现的第一个)

    !!:这里除了可以使用/作为分割字符以外,也可以使用@#作为分割字符。

    sed 's/[0-9]//g' /222.txt (删除所有数字,这里是将数字改为空)

  • 相关阅读:
    数据库自动备份
    VC查找文件特定位置的记录方法
    MFC利用ADO连接ACCESS数据库及其操作数据库的方法
    VC利用ODBC连接MySql数据库的方法及其操作数据的方法
    uwsgi和nginx的故事
    A JavaScript Image Gallery
    The DOM in JavaScript
    A brief look at the Objects in JavaScript
    3 ways of including JavaScript in HTML
    #3 working with data stored in files && securing your application (PART II)
  • 原文地址:https://www.cnblogs.com/daiqinghui/p/14914232.html
Copyright © 2020-2023  润新知