zoukankan      html  css  js  c++  java
  • Linux常用基本命令:grep-从文件或者管道中筛选匹配的行

    grep命令

    作用:从文本文件或管道数据流中筛选匹配的行及数据,配合正则表达式一起使用,功能更加强大。

    格式:

    grep [options] [pattern] [file]

    1,匹配包含"ghostwu"的行

    ghostwu@dev:~/linux/grep$ cat -n ghostwu.txt 
         1    my name is ghostwu
         2    how are you
         3    fine think you
         4    My name is Ghostwu
         5    what's your name?
         6    my name is ghostwu2
         7    
    ghostwu@dev:~/linux/grep$ grep "ghostwu" ghostwu.txt 
    my name is ghostwu
    my name is ghostwu2

    2,-v: 不包含,相当于取反

    ghostwu@dev:~/linux/grep$ grep -v "ghostwu" ghostwu.txt 
    how are you
    fine think you
    My name is Ghostwu
    what's your name?
    
    ghostwu@dev:~/linux/grep$ 

    3,-n 添加行号

    ghostwu@dev:~/linux/grep$ grep -n "ghostwu" ghostwu.txt 
    1:my name is ghostwu
    6:my name is ghostwu2
    ghostwu@dev:~/linux/grep$ grep -vn "ghostwu" ghostwu.txt 
    2:how are you
    3:fine think you
    4:My name is Ghostwu
    5:what's your name?
    7:

    4,-E,使用扩展的egrep命令,模式中可以用正则表达式

    ghostwu@dev:~/linux/grep$ cat ghostwu.txt 
    my name is ghostwu
    how are you
    fine think you
    My name is Ghostwu
    what's your name?
    my name is ghostwu2
    
    ghostwu@dev:~/linux/grep$ grep -E "my|your" ghostwu.txt 
    my name is ghostwu
    what's your name?
    my name is ghostwu2
    ghostwu@dev:~/linux/grep$ grep -Ev "my|your" ghostwu.txt 
    how are you
    fine think you
    My name is Ghostwu
    
    ghostwu@dev:~/linux/grep$ grep -En "my|your" ghostwu.txt 
    1:my name is ghostwu
    5:what's your name?
    6:my name is ghostwu2

    5,-i选项,不区分大小写

    ghostwu@dev:~/linux/grep$ grep "ghostwu" ghostwu.txt 
    my name is ghostwu
    my name is ghostwu2
    ghostwu@dev:~/linux/grep$ grep -i "ghostwu" ghostwu.txt 
    my name is ghostwu
    My name is Ghostwu
    my name is ghostwu2

    6,-c :统计匹配的行数,不是匹配字符串的次数

    ghostwu@dev:~/linux/grep$ grep -c "ghostwu" ghostwu.txt 
    2
    ghostwu@dev:~/linux/grep$ grep -ci "ghostwu" ghostwu.txt 
    3
    ghostwu@dev:~/linux/grep$ grep -c "ghostwu" ghostwu.txt 
    2
    ghostwu@dev:~/linux/grep$ grep "ghostwu" ghostwu.txt 
    my name is ghostwu, nice to meet you,ghostwu
    my name is ghostwu2
    ghostwu@dev:~/linux/grep$ cat -n ghostwu.txt 
         1    my name is ghostwu, nice to meet you,ghostwu
         2    how are you
         3    fine think you
         4    My name is Ghostwu
         5    what's your name?
         6    my name is ghostwu2
         7    

    7,-o: 只输出匹配到的字符串

    ghostwu@dev:~/linux/grep$ grep -o "ghostwu" ghostwu.txt 
    ghostwu
    ghostwu
    ghostwu@dev:~/linux/grep$ grep -oi "ghostwu" ghostwu.txt 
    ghostwu
    Ghostwu
    ghostwu

    8,-w: 只匹配过滤的单词,类似于精确匹配

    ghostwu@dev:~/linux/grep$ grep -w "ghostwu" ghostwu.txt 
    my name is ghostwu, nice to meet you,ghostwu
    ghostwu@dev:~/linux/grep$ grep -wi "ghostwu" ghostwu.txt 
    my name is ghostwu, nice to meet you,ghostwu
    My name is Ghostwu
    ghostwu@dev:~/linux/grep$ cat -n ghostwu.txt 
         1    my name is ghostwu, nice to meet you,ghostwu
         2    how are you
         3    fine think you
         4    My name is Ghostwu
         5    what's your name?
         6    my name is ghostwu2
         7    

    9,常用的一招小技巧,去除文件的注释和空行,在运维中,可以用这条命令把配置文件的空行和注释去掉,然后用管道生成。这样配置文件比较容易查看和配置

    ghostwu@dev:~/linux/grep$ grep -Ev "^$|#" ghostwu.php
    <?php
        class Person {
            public $name = 'ghostwu';
            public $age = 20;
            public function showinfo(){
                echo $this->name . PHP_EOL;
                echo $this->age. PHP_EOL;
            }
        }
    ghostwu@dev:~/linux/grep$ cat -n ghostwu.php 
         1    <?php
         2    
         3        class Person {
         4    
         5            #人名
         6            public $name = 'ghostwu';
         7    
         8            #年龄
         9            public $age = 20;
        10    
        11            #显示信息 
        12            public function showinfo(){
        13                echo $this->name . PHP_EOL;
        14                echo $this->age. PHP_EOL;
        15            }
        16        }
  • 相关阅读:
    一步一步写平衡二叉树(AVL树)
    sql关键字
    Remoting技术的应用
    算法:最大公约数
    算法冒泡排序
    C#编码好习惯
    利用VB.Net编程实现PC与掌上电脑PPC间的双向通信
    .Net Remoting与Server 对象详解
    算法迭代和递归
    SQL关键字系列之:minus与intersect
  • 原文地址:https://www.cnblogs.com/ghostwu/p/9065548.html
Copyright © 2011-2022 走看看