zoukankan      html  css  js  c++  java
  • Shell中的正则表达式

    Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进。

    Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyzhao/p/4485553.html

    本文将总结Shell中的正则表达式及常用的字符处理命令,为打通任督二脉奠定基础^_^。

    1. 基础正则表达式举例说明
    2. 字符截取命令

    3. 字符处理命令

    1. 基础正则表达式举例说明

    *,.,,^word,word$,[list],[^list],[n1-n2],{n},{n,m}

    例1:简易判断日期格式

    比如:2015-05-11,只是简单判断数字的格式。

    ^[0-9]{4}-[0-9]{2}-[0-9]{2}$

    例2:简易判断IP地址格式

    比如:192.168.1.100,只是简单判断数字的格式。

    [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

    例3:找出1.txt文本文件中以字母开头的以及不是以字母开头的行。

    以字母开头的行:

    grep --color=auto "^[a-z,A-Z]" 1.txt

    不是以字母开头的行:

    grep --color=auto "^[^a-z,A-Z]" 1.txt

    2. 字符截取命令

    cut命令

    用途:对于分隔符规范的文本进行特定截取某些列,特点是简单易用。

    例4:cut截取出用户名以及对应的uid,gid,过滤掉包含'/sbin'的行。

    grep -v "/sbin" /etc/passwd | cut -f 1,3,4 -d ":"

    截取结果示例:

    root:0:0
    oracle:500:500
    grid:501:500

    awk命令

    用途:对于分隔符不规范的文本进行截取,特点是功能强大,语法比cut命令复杂。

    awk '条件类型1{动作1}条件类型2{动作2} ...' filename
    1. awk的内置变量:

      NF 每一行($0)拥有的字段总数
      NR 目前awk所处理的是“第几行”数据
      FS 目前的分隔字符,默认是空格键
    2. awk的逻辑运算符:

      >, <, >=, <=, ==, !=

    例5:查询pmon进程的PID。

    ps -ef | grep pmon | grep -v grep | awk '{print $2}'

    例6:打印出/etc/passwd中uid<3的用户和他们的uid。

    cat /etc/passwd | awk 'BEGIN{FS=":"} $3 < 3 {print $1 " " $3}'

    注:注意BEGIN在这里的用途,没有BEGIN第一行显示会不正确。

    例7:截取出系统根目录的磁盘空间使用率

    df -h | awk '{print $5}'|cut -f 1 -d "%"

    sed命令

    sed可以将数据进行替换、删除、新增、选取特定行。

    -n 只有经过sed处理的才显示(默认显示全部)
    -e 直接在命令行模式上进行sed的动作编辑
    -f 将sed的动作写入一个文件,然后-f filename执行filename中的sed命令
    -r 支持扩展型正则表达式语法(默认是基础正则表达式语法)
    -i 直接修改读取的文件内容,而不是默认的屏幕输出结果

    例8:显示行号并打印出/etc/hosts,删除文件的前两行。

    nl /etc/hosts | sed '1,2d'

    例9:把/etc/hosts文件中的JY-DB全部替换为Alfred-DB显示出来

    sed -e 's/JY-DB/Alfred-DB/g' /etc/hosts

    注:此处不写-e参数也可以,如果两个及以上sed命令需要每个前面都写-e参数。

    例10:直接修改/etc/hosts文件,在文件的第2行下插入新的一行“192.168.1.100 JY-DB”

    sed -i '2a 192.168.1.100 JY-DB' /etc/hosts

    3. 字符处理命令

    sort命令

    用途:对结果进行排序显示。

    du -sk * | sort -rn
    sort -t ":" -k "3,3" /etc/passwd
    sort -n -t ":" -k "3,3" /etc/passwd

    wc命令

    用途:统计结果行,单词,字符的数量。

    统计行wc -l

    例11:统计oracle的用户进程数

    ps -ef | grep LOCAL=NO | grep -v grep | wc -l

    统计单词wc -w

    例12:统计/etc/issue文件的单词数

    wc -w /etc/issue

    统计字符wc -m

    例13:统计/etc/issue文件的字符数

    wc -m /etc/issue

    AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
     
    分类: Linux
  • 相关阅读:
    SqlConnectionStringBuilder
    什么时候使用“静态方法”(转)
    Dos命令下多文件中查找某字符串
    StructLayout(LayoutKind.Sequential)(转)
    DOS批处理高级教程:第四章 批处理中的变量(转)
    DOS批处理高级教程:第一章 批处理基础(转)
    C#各种进制之间数据转换二进制、八进制、十进制、十六进制
    DOS批处理高级教程:第六章 if命令讲解(转)
    ModbusRTU模式和结束符(转)
    DOS批处理高级教程:第七章 DOS批处理编程高级技巧(转)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4507201.html
Copyright © 2011-2022 走看看