一、文本处理命令:
    1.wc: word count
     wc [options] FILE
        -l: 只显示行数;
        -w 单词
        -c  字符

    2. tr: translate
        tr [options] '原来的字符集合' '转换为的字符集合'
        tr '123' 'abc'
        -d '字符集合':把出现的文件中的,属于字符集合中的字符统统删除;

    3. cut: 文本切割,最常用的功能是能够使用指定的符号作为行中内容的分隔符,将每一行切片,而只取出某些片;
        cut [options] FILE
            -d默认分隔符为空白,-d: 以冒号为分隔符
            -f 1-5,7: f后可无空格

    4.join 将两个文件中的指定行合并

    5. sort: 排序不操作源文件仅输出

    -f: 忽略字符大小写;
    -n: 以数值大小进行排序;
    -r: 降序;
    -u: 移除重复的行,具有相同内容的行只保留一个;
    -R: 随机排序;

    -k: 类似cut中-f

    -t:类似cut中-d如

# grep “/bin/bash$” /etc/passwd  | sort –n –t: –k3 | head –1 | cut –d: -f1 

   6. uniq:

    -c:统计每行重复的次数;
    -u:只显示没有重复的行
    -d: 只显示重复过的行;

二、管道、重定向

    管道:shell, COMMAND1 | COMMAND2

    程序:读入数据,执行结果输出

    stdin: Standard Input,标准输入,默认输入
    stdout: Standard Output, 标准输出,默认输出

    例 echo password | passwd –stdin username

三、grep

    1.grep  常用限定条件

    grep [options] 'pattern' FILE

    正则表达式:基本正则表达式,扩展正则表达式;

    基本正则表达式:贪婪模式(尽可能长地去匹配符合模式的内容)
        ^锚定行首的符合条件的内容,用法格式“^pattern”;
        $锚定行尾的符合条件的内容,用法格式“pattern$”;
         .匹配任意单个字符
        *匹配紧挨在其前面的字符任意次;
            a*b: ab, aab, acb(匹配0次,此例针对部分字符串而非整个字符串), b(匹配0次)
        .*匹配任意长度的任意字符
        []:匹配指定范围内的任意单个字符
        [^]:匹配指定范围外的任意单个字符

   扩展正则表达式:
    .: 任意单个字符
    []:
    [^]:
    *
    +: 匹配其前面的字符至少1次;比基本正则多出的
    ?:
    {m,n}: 至少m次,至多n次;  匹配可无反斜线与基本正则不同
    ():分组,支持引用\1, \2;    分组前可无反斜线与基本正则不同
    a|b: 二选一;比基本正则多出的  egrep ^(a|A) 以A/a开头
    \<
    \>
    ^
    $


            [a-z], [A-Z], [0-9]
            [:lower:] a-z
            [:upper:]
            [:digit:]
            [:alpha:]
            [:alnum:]
            [:space:]
            [:punct:]

   对应解释:

[:alnum:]
Alphanumeric characters: `[:alpha:]' and `[:digit:]'.

[:alpha:]
Alphabetic characters: `[:lower:]' and `[:upper:]'.

[:blank:]
Blank characters: space and tab.

[:cntrl:]
Control characters. In ASCII, these characters have octal codes
000 through 037, and 177 (`DEL'). In other character sets, these
are the equivalent characters, if any.

[:digit:]
     Digits: `0 1 2 3 4 5 6 7 8 9'.

[:graph:]
Graphical characters: `[:alnum:]' and `[:punct:]'.

[:lower:]
     Lower-case letters: `a b c d e f g h i j k l m n o p q r s t u v w
x y z'.
[:print:]
Printable characters: `[:alnum:]', `[:punct:]', and space.

[:punct:]
Punctuation characters: `! " # $ % & ' ( ) * + , - . / : ; < = > ?
@ [ \ ] ^ _ ` ~'.

[:space:]
     Space characters: tab, newline, vertical tab, form feed, carriage
return, and space.

[:upper:]
Upper-case letters: `A B C D E F G H I J K L M N O P Q R S T U V W
X Y Z'.

[:xdigit:]
Hexadecimal digits十六进制: `0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f'.

            grep "r[0-9].*h" /etc/passwd
        \?: 匹配紧挨在其前面的字符0次或1次;
            a\?b: ab, aab, acb, b
        \{m,n\}: 匹配其前面的字符至少m次,至多n次;
            \{0,n\}: 至多n次;0-n次;
            \{m,\}:至少m次
            \{m\}: 精确匹配m次;
                a\{1,3\}b: b, ab, aab, aaab, aaaaaab, acb
                grep "[bB].\{2,5\}[tT]": Boot, B123T, bxy12T
        \<: 锚定词首,用法格式:\<pattern
            \b: \bpattern
        \>: 锚定词尾,用法格式:pattern\>
            \b: pattern\b
            \<pattern\>:锚定单词
        \(\): 分组,用法格式: \(pattern\)
            \(ab\)\{1,3\}: ab, aab, abb, abab, ababab,
            ab任意字符ab:ab.*ab
            a.b任意字符a.b: \(a.b\).*\1--引用之前的分组,数字为匹配的前面出现的第几个分组

    2.grep的选项:
    --color=auto
        export GREP_COLOR='01;36'
    -v: 反向选取,只显示不符合模式的行;
    -o: 只显示被模式匹配到的字串,而不是整个行;
    -i: 不区分字符大小写;

    -A #:显示匹配到的行时,顺带显示其后面的#个行;
        -A 2
    -B #:前面的#行;
    -C #:前后的#行;

    -E: 使用扩展的正则表达式
        grep -E = egrep

    -w: 即锚定词首词尾

    -r:递归查找  如 grep  “^root”  /etc

      一个例子

找出ifconfig命令结果中的1-255之间的整数;
ifconfig | grep --color=auto -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"