aws-grep-cut-sort-uniq-sed

来源:互联网 发布:阿里云人工服务电话 编辑:程序博客网 时间:2024/05/17 04:57

uniq

统计所有重复的次数,并打印出来

wc  –l  :以行来统计

         -c      :以列来统计

         -m  :精准统计这文件总共有多少字符,把空格也算上

ls  -S  :以时间来排序

         -r      :以大小来排序

cut

特点:能自定义分隔符

 

    -c      --字符 

    -d      --分隔符

    -f      --列

    --output-delimiter    --输出分隔符 (可以自定义)

       

# echo12345  |cut -c2

        2

        # echo12345  |cut -c1,4

        14

        # echo12345  |cut -c2-4

        234

        #ifconfig eth0 |grep Mask |cut -d " " -f12 |cut -d ":" -f2

 

        # head -1/etc/passwd | cut -d ":" -f 1,3,4 --output-delimiter="#"

 

sort

 


特点:能定向原文件(覆盖)

 


         -u            --去除重复行

    -r      --降序排列,默认是升序

         -o      --定向

原有的文件(覆盖)例:sort 1.txt -o 1.txt

    -n      --在通常情况下shell排序会义为10比2小的情况, 告诉sort,“要以数值来排序”!

    -t和-k  --当一行数据有多列的情况,想让非第1列的数值来排序,用法 sort -n -k 2 -t : facebook.txt

    例:    cat /etc/passwd |sort -n -t:  -k 3

grep

    参数:

-i  ignore case     忽略大小写

-v  invert match    不匹配的内容,取反的意思

-l  file-with-match 输出匹配的文件名

-L  file-without-match  输出不匹配的文件名

-c  count       输出匹配的数目(行数)                                  统计次数

-n  number      输出匹配行的同时在前面加上文件名及在文件名中的行数

-h  no-filename     抑制文件名的输出

-E  匹配多个关键字

-o  将匹配的结果全部显示出来,一般用于统计匹配多少次                     显示所有匹配的内容,其他不显示

 

-A  匹配结果往下显示N行

-B  匹配结果往前显示N行

-C  匹配结果前后显示N行

   

    正则表达式规则:

 

    .   代表一个任意字符

    ..  两个字符

    *  代表零个或者多个前字符

    .*  0个或多个

    ..*     代表非空的任意字符

    +  代表一个或者多个前字符

    ^   开头

    $   结束

    []     匹配单个字符

    [abc]   包含a或b或c的都匹配,匹配单个字符

    [^abc]  只要出现了abc这三个字母以外的字符就都匹配,排除

    ^[abc]  以a开头或以b开头或以c开头

    ^[^abc] 不以a开头或不以b开头或不以c开头

    a+  匹配至少一个或多个a

    a*  匹配0或多个a

 

 

    大写[[:upper:]] 或 [A-Z]

    小写[[:lower:]] 或 [a-z]

    字母[[:alpha:]] 或 [a-Z]  

    字母数字[[:alnum:]]

    空格或者制表符 [[:blank:]]

    纯数字[[:digit:]] 或 [0-9]

    标点符号[[:punct:]]

 

    例:grep.*:.*:4:.*:.*:.*:.* /etc/passwd

 

sed

    -n      只打印处理过的信息  ,不加默认是打印所有

    -e      多次动作

    -f      跟awk一样的功能,只有加上这个参数才能运行脚本

    -r      加入表示运用正则表达式

    -i     ***********  修改文件内容 ,如果不添加  原文件内容不会有改动

----------------------------------------------------------------

         i        指定行前面插入内容  如果不指定行,默认是全部都添加

         a                指定行后面插入内容,不过不指定行,默认是全部都添加

         c                 取代一整行

         d                删除

         p                打印

    s       取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如sed –n s/old/new/

    特殊:

                 sed  -ip   ‘s// /d’ 会把所有空格的内容都删除,包括里面原有的内容

                 sed -ip   ‘s/ / /g’ 只会删除有空格的内容  但空格理由内容的会保留

 

 

awk

1.     

-F 指定分隔符

        -f 指定脚本文件

        -v 定义变量(如果不加就必须把变量写在print 后面)

 

        $0  输出整行

 

2.模式匹配:

        //                  纯字符匹配

        !//                 纯字符不匹配

        ~//                 字段值匹配

        !~//                字段值不匹配

        ~/a1|a2|a3|a7|a9|/  字段匹配a1或a2或a3...

 

 

3.操作模块:

    BEGIN{执行一次} {执行多次}#这可以多个{} END{执行一次}

    例:

cat 1.txt |awk –F”:”’BEGIN{sum=0}$2<=10 && $2>1 {print $1} $2<=20 $2>11 {print $1}’

 

4.内置变量

    $1~$n   当前记录的第n个字段,字段间由FS分隔

    FS      输入字段分隔符,默认是空格或tab 

    例:    -F是写在awk 后面 ,FS是写在BEGIN 后面 

  awk 'BEGIN{FS=":"} NR==1 {print$0}' /etc/passwd

    NF      当前记录中的字段个数,就是有多少列,一般取最后一列字段

    NR      已经读出的记录数,就是行号,从1开始

    RS      输入的记录分隔符,默认为换行符

    OFS     输出字段分隔符,默是空格

    ORS     输出的记录分隔符,默认为换行符

   

5、awk关系操作符

    ==   等于

    !=   不等于

    >    大于

    <    小于

    >=   大于等于

    <=   小于等于

 

6、awk逻辑操作符

    &&  逻辑与  类似shell里的[ 条件1 -a  条件2 ]

    ||  逻辑或  类似shell里的[ 条件1 -o  条件2 ]

    !  非

 

7.读取脚本的方法 :

    awk –f awk.awk  1.txt

 

8.长度函数:

Length()

awk –F”:” ‘{print $1”长度为”length($1)}’ /etc/passwd

 

substr()   截取函数 

用法:把$0第一个字符开始 截取1个

ll /etc |awk ‘substr($0,1,1)==”d” {print $NF}’

阅读全文
0 0