人若无名,便可专心练剑

linux shell 之 字符处理命令一

  |   0 评论   |   3,753 浏览

    1cut 截取命令

    cut :主要用于对行数据的分解

    常用语法:

    用法:cut [选项]... [文件]...
    从每个文件中输出指定部分到标准输出。
    长选项必须使用的参数对于短选项时也是必需使用的。
      -b, --bytes=列表		只选中指定的这些字节
      -c, --characters=列表		只选中指定的这些字符#如:cat /etc/p -d, --delimiter=分界符	使用指定分界符代替制表符作为区域分界
      -f, --fields=列表		只选中指定的这些域;并打印所有不包含分界符的
    				行,除非-s 选项被指定
      -n				(忽略)
          --complement		补全选中的字节、字符或域
      -s, --only-delimited		不打印没有包含分界符的行
          --output-delimiter=字符串	使用指定的字符串作为输出分界符,默认采用输入
    				的分界符
          --help		显示此帮助信息并退出
          --version		显示版本信息并退出
    
    仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔
    开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次。
    每种参数格式表示范围如下:
        N	从第1 个开始数的第N 个字节、字符或域
        N-	从第N 个开始到所在行结束的所有字符、字节或域
        N-M	从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
        -M	从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
    
    当没有文件参数,或者文件不存在时,从标准输入读取
    

    例子:

    1,截取第一列的内容如


    root@c2y2:/# cat passwd.txt
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    root@c2y2:/# cat passwd.txt|cut -d ":" -f 1
    root
    daemon
    bin
    sys
    sync
    games
    man
    lp
    mail
    news
    uucp
    list
    irc
    gnats
    nobody
    


    2,sort 排序命令

    sort:常用于对文本按行进行排序

    常用语法:

    用法:sort [选项]... [文件]...
     或:sort [选项]... --files0-from=F
    串联排序所有指定文件并将结果写到标准输出。
    
    长选项必须使用的参数对于短选项时也是必需使用的。
    排序选项:
    
      -b, --ignore-leading-blanks	忽略前导的空白区域
      -d, --dictionary-order	只考虑空白区域和字母字符
      -f, --ignore-case		忽略字母大小写
      -g, --general-numeric-sort	按照常规数值排序
      -i, --ignore-nonprinting	只排序可打印字符
      -M, --month-sort		比较 (未知) < "一月" < ... < "十二月"
    				在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC'
      -h, --human-numeric-sort    使用易读性数字(例如: 2K 1G)
      -n, --numeric-sort		根据字符串数值比较
      -R, --random-sort		根据随机hash 排序
          --random-source=文件	从指定文件中获得随机字节
      -r, --reverse			逆序输出排序结果
          --sort=WORD		按照WORD 指定的格式排序:
    					一般数字-g,高可读性-h,月份-M,数字-n,
    					随机-R,版本-V
      -V, --version-sort		在文本内进行自然版本排序
    
    其他选项:
    
          --batch-size=NMERGE	一次最多合并NMERGE 个输入;如果输入更多
    					则使用临时文件
      -c, --check, --check=diagnose-first	检查输入是否已排序,若已有序则不进行操作
      -C, --check=quiet, --check=silent	类似-c,但不报告第一个无序行
          --compress-program=程序	使用指定程序压缩临时文件;使用该程序
    					的-d 参数解压缩文件
          --debug			为用于排序的行添加注释,并将有可能有问题的
    					用法输出到标准错误输出
          --files0-from=文件	从指定文件读取以NUL 终止的名称,如果该文件被
    					指定为"-"则从标准输入读文件名
      -k, --key=位置1[,位置2]	在位置1 开始一个key,在位置2 终止(默认为行尾)
    				参看POS 语法。
      -m, --merge			合并已排序的文件,不再进行排序
      -o, --output=文件		将结果写入到文件而非标准输出
      -s, --stable			禁用last-resort 比较以稳定比较算法
      -S, --buffer-size=大小	指定主内存缓存大小
      -t, --field-separator=分隔符	使用指定的分隔符代替非空格到空格的转换
      -T, --temporary-directory=目录	使用指定目录而非$TMPDIR 或/tmp 作为
    					临时目录,可用多个选项指定多个目录
          --parallel=N		将同时运行的排序数改变为N
      -u, --unique		配合-c,严格校验排序;不配合-c,则只输出一次排序结果
      -z, --zero-terminated	以0 字节而非新行作为行尾标志
          --help		显示此帮助信息并退出
          --version		显示版本信息并退出
    

    例子:

    1,统计网络访问并按ip排序


    root@c2y2:/# netstat -atlnup|awk '{print $5}'|sort -n
    :::*
    :::*
    :::*
    :::*
    :::*
    0.0.0.0:*
    0.0.0.0:*
    0.0.0.0:*
    0.0.0.0:*
    0.0.0.0:*
    0.0.0.0:*
    Address
    and
    59.188.77.95:80
    59.188.77.95:9998
    63.245.216.134:443
    63.245.217.207:443
    74.125.235.198:443
    115.239.210.151:80
    173.194.72.113:443
    173.194.72.113:443
    178.63.49.5:443
    178.63.49.5:443
    220.181.111.96:80

    3,wc 统计命令

    wc:常用于统计行数,字节,或者字符数

    常用语法:

    用法:wc [选项]... [文件]...
      -c, --bytes            打印出字节总数
      -m, --chars          打印出字符总数
      -l, --lines              打印出总行数
          --files0-from=文件	从指定文件读取以NUL 终止的名称,如果该文件被
    					指定为"-"则从标准输入读文件名
      -L, --max-line-length	显示最长行的长度
      -w, --words			显示单词计数
          --help		显示此帮助信息并退出
          --version		显示版本信息并退出
    

    例子:用于统计某个pass.txt的行数

    root@c2y2:/# cat passwd.txt 
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    root@c2y2:/# cat passwd.txt |wc -l
    15

      4,uniq 合并匹配命令

    uniq:这个指令用来将『重复的行删除掉只显示一个』(相邻的行才有效哦)

    常用语法:

    用法:uniq [选项]... [文件]
    从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
    不附加任何选项时匹配行将在首次出现处被合并。
    长选项必须使用的参数对于短选项时也是必需使用的。
      -c, --count		在每行前加上表示相应行目出现次数的前缀编号
      -d, --repeated	只输出重复的行
      -D, --all-repeated[=delimit-method	显示所有重复的行
    			delimit-method={none(default),prepend,separate}
    			以空行为界限
      -f, --skip-fields=N	比较时跳过前N 列
      -i, --ignore-case	在比较的时候不区分大小写
      -s, --skip-chars=N	比较时跳过前N 个字符
      -u, --unique		只显示唯一的行
      -z, --zero-terminated	使用'\0'作为行结束符,而不是新换行
      -w, --check-chars=N	对每行第N 个字符以后的内容不作对照
          --help		显示此帮助信息并退出
          --version		显示版本信息并退出
    
    例子:查看网络链接并合并同ip的
    root@c2y2:/# netstat -atlnup
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 192.168.28.126:34782    59.200.33.95:80         ESTABLISHED 3304/google-chrome-
    tcp        0      0 192.168.28.126:43808    74.125.31.100:443       ESTABLISHED 3304/google-chrome-
    tcp        0      0 192.168.28.126:35103    63.245.217.207:443      ESTABLISHED 11524/iceweasel 
    tcp        0      0 192.168.28.126:52287    59.200.33.95:9998       ESTABLISHED 12273/fuckyou       
    tcp        0      0 192.168.28.126:49368    74.125.235.198:443      ESTABLISHED 3304/google-chrome-
    tcp        0      0 192.168.28.126:52504    178.63.49.5:443         ESTABLISHED 11524/iceweasel 
    tcp        0      0 192.168.28.126:52499    178.63.49.5:443         TIME_WAIT   -               
    tcp        0      0 192.168.28.126:51084    63.245.216.134:443      ESTABLISHED 11524/iceweasel 
    udp        0      0 0.0.0.0:32824           0.0.0.0:*                           7389/dhclient   
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           7389/dhclient   
    udp        0      0 192.168.1.105:123       0.0.0.0:*                           2499/ntpd       
    udp        0      0 192.168.28.126:123      0.0.0.0:*                           2499/ntpd       
    udp        0      0 127.0.0.1:123           0.0.0.0:*                           2499/ntpd       
    udp        0      0 0.0.0.0:123             0.0.0.0:*                           2499/ntpd       
    udp6       0      0 :::64957                :::*                                7389/dhclient   
    udp6       0      0 fe80::222:5fff:febf:123 :::*                                2499/ntpd       
    udp6       0      0 fe80::182b:3cff:fe4:123 :::*                                2499/ntpd       
    udp6       0      0 ::1:123                 :::*                                2499/ntpd       
    udp6       0      0 :::123                  :::*                                2499/ntpd       
    root@c2y2:/# netstat -atlnup|awk '{print $5}'|sort|uniq -c
          5 :::*
          6 0.0.0.0:*
          2 178.63.49.5:443
          1 59.200.33.95:80
          1 59.200.33.95:9998
          1 63.245.216.134:443
          1 63.245.217.207:443
          1 74.125.235.198:443
          1 74.125.31.100:443
          1 Address
          1 and
    


    后记:例子没几个,:-),使用起来很简单,使用时直接看其使用手册就ok拉,man command ^_^。男人嘛,多man才行哦!



    dropbox:邀请您的加入,让你随时随地同步您的文件:https://db.tt/wCU4HQq4

    人生格言: 如果说人生是自我编写的程序, 那么青春就是其中意味深长的代码。 或简单,分解成彼此独立的字符: 或复杂, 拼凑成一连串神秘的语句。 我们尝试着不断调试, 不断优化,无论编译结果如何, 过程才是最美。 如果说这段代码不能复制, 那么我愿意用一生去续写.

    评论

    发表评论

    validate