zoukankan      html  css  js  c++  java
  • 011_grep

    1. grep : Global search Regular expression and Print out the line.
        1.1. function:searches  the given FILEs for lines containing a match to the given PATTERN.
        1.2. Basic grammar : grep [OPTIONS] PATTERN [FILE…]
            [root@promote ~]# grep root /etc/passwd  
                //Print the lines matched 'root'
            [root@promote ~]# grep --color=auto root /etc/passwd
                //--color=auto highlight the matched strings
            [root@promote ~]# fgrep root /etc/passwd
                // 快速匹配
        1.3 Commondly used options
            --color=auto: colours matched items;
            -v: Invert the sense of matching, to select non-matching lines;
            -i: Ignore case distinctions in both the PATTERN and the input files
            -o: Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
            -q: Quiet; do not write anything to standard output.  Exit immediately with zero status if any match is found, even if an error was detected.
            -A #:after, Print NUM lines of trailing context after matching lines.  Places a line containing a group separator
            -B #: before, Print NUM lines of leading context before matching lines.  Places a line containing a group separator
            -C #:context, Print  NUM  lines  of  output  context.   Places  a line containing a group separator
            -E:Interpret PATTERN as an extended regular expression    
        1.4 Meta-charecter of Regular expression
            1.4.1 Character match
                .:  Matchs any single character
                []: Matchs any single character within specified range
                [^]:Matchs any signal character without specified range
                [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]

                [root@promote ~]# grep 's..n' /etc/passwd
                    //查询 /etc/passwd中所有以 s开头以n结尾中间有两个任意字符的字符串
                [root@promote ~]# grep '...t' /etc/passwd
                    //查询 /etc/passwd中所有以 任意三个字符开始以t结尾的字符串
            1.4.2 The number of match : Used after the item which need to specify the number of match times,Used to specify the number of match times of The preceding item.
                *:Matchs The preceding item zero or more times, refers to only times.
                .* : Matchs any item -----Any character of any length
                    [root@bogon ~]# grep 'r.*t' /etc/passwd
                ? : Matchs the preceding item zero or at most one times.
                    [root@bogon ~]# grep 'ro?t' /etc/passwd
                + : Matchs the preceding item at lest one times.
                    [root@bogon ~]# grep 'ro+t' /etc/passwd
                {m} : The preceding item is matched exactly m times
                    [root@bogon ~]# grep 'ro{2}t' /etc/passwd
                {m,n} : The preceding item is matched at lest m times and at most n times.
                {0,n} : he preceding item is matched at most n times
                {m,} : he preceding item is matched at lest m times

            1.4.3 Anchoring
                ^ : Only matchs the PATTERN at the begining of a line.
                    [root@bogon ~]# grep '^ro{2}t' /etc/passwd
                $ : Only matchs the PATTERN at the end of a line.
                    [root@bogon ~]# grep 'ro{2}t$' /etc/passwd
                ^PATTERN$ : Matchs the entire line.
                ^$ : Matchs blank lines
                ^[[:space:]]*$ : Matchs blank lines
                
                < or :Matchs at the beginning of a word
                > or :Matchs at the end of a word
                <PATTERN>:Matchs the entire word
                    [root@bogon ~]# grep '<ro{2}t' /etc/passwd
            1.3.4 group : process multiple characters as a whole
                () : (xy)*ab  --  Matchs 'xy' zero or more times.
            1.3.5 reference
                [root@bogon ~]# grep '(<ro{2}t).*1' /etc/passwd
                '(<ro{2}t).*1' is different from '(<ro{2}t).*(<ro{2}t)'
                    If you don't get it,you need to have a try.
    2. exercise
        1) Print the lines beginning with 's' or 'S' in /proc/meminfo file with two methods.
        2) Print the lines of /etc/passwd file which are not end with /bin/bash.
        3) Print the user name saved in the /etc/passwd file which the name has the biggest ID value.
        4) Print the default shell if the root user exists;
            # id root &> /dev/null && grep "^root>" /etc/passwd | cut -d: -f7
        5) Find two or three digit value in /etc/passwd;
            # grep "<[0-9]{2,3}>" /etc/passwd
        6) Print the lines beginning with a space and ending with non-space in /etc/rc.d/rc.sysinit file;
            # grep "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg
        7) Print the lines ending with zero or more spaces of the result of executing "netstat -tan"
            # netstat -tan | grep "LISTEN[[:space:]]*$"
        8)  Add users named bash、testbash、basher and nologin(and the shell is /sbin/nologin); and then find the lines which have the same name as its shell name.
            # grep "^([[:alnum:]]+>).*1$" /etc/passwd

  • 相关阅读:
    手动添加 memcached.jar包
    easyui返回数据类型
    负载均衡
    nginx负载均衡
    nginx配置文件详解
    Js操作Select大全(取值、设置选中)
    jQuery select的操作代码
    jQuery对Select操作大集合
    PHP+AJAX无刷新返回天气预报
    一个好用的PHP验证码类
  • 原文地址:https://www.cnblogs.com/liujun5319/p/9600876.html
Copyright © 2011-2022 走看看