zoukankan      html  css  js  c++  java
  • Linux-正则、grep、sed学习笔记

    一、正则和grep

    正则表达式的实现分成了两类: 基本正则表达式(BRE)和扩展的正则表达式(ERE)。

    BRE 和 ERE 之间有什么区别呢?这是关于元字符的问题。BRE 可以辨别以下元字符:

    ^ $ . [ ] *

    其它的所有字符被认为是文本字符。ERE 添加了以下元字符(以及与其相关的功能):

    ( ) { } ? + |

    在 BRE 中,字符“(”,“)”,“{”,和 “}”用反斜杠转义后,被看作是元字符, 相反在 ERE 中,在任意元字符之前加上反斜杠会导致其被看作是一个文本字符。


    grep默认使用BRE,egrep支持ERE, GNU 版本的 grep 程序在使用了-E 选项之后也支持扩展的正则表达式。

    基础正则表达式汇总:

    扩展正则表达式汇总:

    { 和 } 元字符都被用来表达要求匹配的最小和最大数目。它们可以通过四种方法来指定:

    正规表示法的特殊字节』与一般在命令列输入命令的『万用字节』并不相同, 例如,在万用字节当中的 * 代表的是『 0 ~ 无限多个字节』的意思,但是在正规表示法当中, * 则是『重复 0 到无穷多个的前一个 RE 字符』的意思,使用的意义并不相同。

    二、sed

    sed 本身也是一个管线命令,可以分析 standard input ,而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能。

     1、以行为单位的新增/删除功能

    sed 后面接的动作,请务必以 ' ' 两个单引号括住。

    如果只要删除第 2 行,可以使用『 nl /etc/passwd | sed '2d' 』来达成, 若是要删除第 3 到最后一行,则是『 nl /etc/passwd | sed '3,$d' 』,『 $ 』代表最后一行。

    如果是要在第二行前呢?『 nl /etc/passwd | sed '2i drink tea' 』

    一次性添加多行,每一行之间都必须要以反斜线『 』来进行新行的添加。

    2、以行为单位的取代与显示功能

    -n 为安静模式,只显示出被sed处理的行。

    3、部分数据的搜寻并取代的功能

    4、直接修改文件内容(危险动作)

  • 相关阅读:
    Codeforces 1167E(思路、数据处理)
    Codeforces 185D(发现性质、欧拉定理)
    BUPT2017 springtraining(16) #4 ——基础数论
    Codeforces Round #404 (Div. 2)——ABCDE
    BUPT2017 springtraining(15) #3
    BUPT2017 springtraining(16) #3 ——搜索与动态规划
    BUPT2017 springtraining(16) #2 ——基础数据结构
    Codeforces Round #413(Div. 1 + Div. 2, combined)——ABCD
    BUPT2017 springtraining(16) #1 ——近期codeforces简单题目回顾
    Codeforces Round #400 (Div. 1 + Div. 2, combined)——ABCDE
  • 原文地址:https://www.cnblogs.com/zczhangcui/p/11175330.html
Copyright © 2011-2022 走看看