• grep工具


           全面搜索正则表达式(Global search regular expression(RE) ,GREP)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    Unix/Linux的grep家族包括grep、egrep和fgrep,其中egrep和fgrep的命令跟grep有细微的区别,egrep是grep的扩展,支持更多的re元字符, fgrep是fixed grep或fast grep简写,它们把所有的字母都看作单词,正则表达式中的元字符表示其自身的字面意义,不再有其他特殊的含义,一般使用比较少。

    目前Linux操作系统默认使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。其语法格式及常用参数详解如下:

    1)Grep工具的语法格式:

           grep  -option(参数) word(字符) file(文件);

           Option参数:-a(文本形式)、-c(统计)、-i(忽略大小写)、-v(反选|排除)、-n(行号)、-o(打印匹配词)、-E(扩展参数|egrep)、-A(after匹配之后行)、-B(before匹配之前行)、-C(context 匹配前和后的行)、-r(递归目录搜索)等;

           File文件:匹配的对象,从什么地方进行匹配、文本文件、输出结果;

    主要参数
    [options]主要参数:
    -a       不要忽略二进制数据。
    -An      除了显示符合范本样式的那一行之外,并显示该行之后n行的内容。
    -Bn      在显示符合范本样式的那一行之外,并显示该行之前n行的内容。
    -c       只输出匹配行的计数。
    -Cn      除了显示符合范本样式的那一行之外,并显示该列之前后的内容。
    -d       <进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
    -e       <范本样式> 指定字符串作为查找文件内容的范本样式。 制动多个匹配样式:
    -E       将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
    -f       <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
    -F        将范本样式视为固定字符串的列表。
    -G        将范本样式视为普通的表示法来使用。
    -h        在显示符合范本样式的那一行之前,不标示该列所属的文件名称。
    -H        在显示符合范本样式的那一行之前,标示该列的文件名称。
    -i        忽略字符大小写的差别。
    -l        列出文件内容符合指定的范本样式的文件名称。
    -L        列出文件内容不符合指定的范本样式的文件名称。
    -n        显示匹配行及 行号。
    -q        不显示任何信息。
    -R/-r     递归的对目录下的所有文件(包括子目录)进行 grep-s        不显示不存在或无匹配文本的错误信息。
    -v        反转查找。
    -V        显示版本信息
    -w        只显示全字符合的列。
    -x        只显示全列符合的列。
    -y        此参数效果跟“-i”相同。
    -o        只输出文件中匹配到的部分

    2)通配符类型详解

    *               0个或者多个字符、数字;
    ?               匹配任意一个字符;
    #               表示注解;
    |               管道符号;
    ;               多个命令连续执行;
    &               后台运行指令;
    !               逻辑运算非;
    [ ]             内容范围,匹配括号中内容;
    { }             命令块,多个命令匹配。

    3)正则表达式主要参数:

    *               前一个字符匹配0次或多次;
    .               匹配除了换行符以外任意一个字符;
    .*              代表任意字符;
    ^               匹配行首,即以某个字符开头;
    $               匹配行尾,即以某个字符结尾;
    (..)          标记匹配字符;
    []              匹配中括号里的任意指定字符,但只匹配一个字符;
    [^]             匹配除中括号以外的任意一个字符;
                   转义符,取消特殊含义;
    <              锚定单词的开始;
    >              锚定单词的结束;
    {n}             匹配字符出现n次;
    {n,}            匹配字符出现大于等于n次;
    {n,m}           匹配字符至少出现n次,最多出现m次;
    w              匹配文字和数字字符;
    W              w的反置形式,匹配一个或多个非单词字符;
                  单词锁定符;
    s              匹配任何空白字符;
    d              匹配一个数字字符,等价于[0-9]。

    4)常用GREP工具企业演练案列:

    grep  -c "test"          jfedu.txt                       统计test字符总行数;
    grep  -i "TEST"          jfedu.txt                       不区分大小写查找TEST所有的行;
    grep  -n "test"          jfedu.txt                       打印test的行及行号;
    grep  -v "test"          jfedu.txt                       不打印test的行;
    grep  "test[53]"          jfedu.txt                      以字符test开头,接5或者3的行;
    grep  "^[^test]"          jfedu.txt                      显示输出行首不是test的行;
    grep  "[Mm]ay"           jfedu.txt                       匹配M或m开头的行;
    grep  "K…D"          jfedu.txt                           匹配K,三个任意字符,紧接D的行;
    grep  "[A-Z][9]D"       jfedu.txt                        匹配大写字母,紧跟9D的字符行;
    grep  "T{2,}"          jfedu.txt                       打印字符T字符连续出现2次以上的行;
    grep  "T{4,6}"          jfedu.txt                      打印字符T字符连续出现4次及6次的行;
    grep  -n "^$"           jfedu.txt                        打印空行的所在的行号;
    grep  -vE "#|^$"       jfedu.txt                         不匹配文件中的#和空行;
    grep   --color -ra -E    "db|config|sql"  *              匹配包含db或者config或者sql的文件;
    grep   --color -E "<([0-9]{1,3}.){3}([0-9]{1,3})>"    jfedu.txt 匹配IPV4地址。
    ifconfig|grep -w inet
    ifconfig|grep netmask
    ifconfig|grep 255
    ifconfig|grep -E "192|127"
  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/deny/p/10000183.html
Copyright © 2020-2023  润新知