• linux shell——md5sum,sha1sum,sort,uniq (转)


    1.文件校验
    1. md5sum
    eg:
    md5sum filename
    注:生成一个128位的二进制位,即32位的十六进制字符串

    1.验证文件的正确性:
    md5sum  file1 file2 > file_sum.md5
    下一次想看一下文件是否被改动
    md5sum -c file_sum.md5
    file1:ok
    file2:ok
    验证成功
    2.验证一个目录dir下的所有文件的正确性
    find dir/ -type f -print -exec md5sum {} >file_sum.md5 ;
    or
    find dir/ -type f -print0 | xargs -0 md5sum >> file_sum.md5
    注:用print0是因为如果文件名中有空格的,不计算在内

    这会生成一个文件:file_sum.md5
    md5sum -c file_sum.md5
    若全部ok,则正确
    3.校验网上下载的文件是否正确
    将下载的文件和MD5文件放在目录dir下(如果是md5字符串,可以新建一个文件为file_sum.md5)
    cd dir 
    md5sum -c file_sum.md5
    若输出ok,则验证正确

    2. sha1sum
    sha1算法和md5差不多,但他生成了160位二进制数,即
    40位16进制数
    用法同md5sum
    eg sha1sum file1 file2 > file.sha1
    检验:

    sha1sum -c file.sha1


    2.对文件中的数据进行排序,并查找唯一值
    sort和uniq


    sort可以对文件的没行按关键值进行排序,如月份-M,字典顺序-d等
    注意:sort和uniq对文件内容本身不改变,所以,应该重定向到别的文件中


    1.对多个文件中的内容进行排序
    eg:

    $ cat > file1
    3
    4
    5
    e

    $ cat > file2
    ge
    re
    e
    $ sort file1 file2 > sorted.txt
    $ cat sorted.txt
    3
    4
    5
    e
    e
    ge
    re

    2.对文件按列排序
    $ cat > data.txt
    1 mac2000
    2 winxp4000
    3 bsd1000
    4 linux1000

    1.对数据按第一组逆序
    $ sort -nrk 1 data.txt
    注:n是数字排序,r是逆序,k是第几列关键字key 1表示第一列

    $ sort -k 2 data.txt
    3 bsd1000
    4 linux4000
    1 mac2000
    2 winxp4000

    3.在文件中删除重复行
    $ cat > data.txt
    ll
    ll
    ss
    ss
    $ uniq data.txt > uniq.txt
    $ cat uniq.txt
    ll
    ss
    4.使用uniq计算字符串中重复的次数
    $ echo 'shebhaaa' | sed 's/[^ ]/& /g' | sed sort | uniq -c | tr -d ' '
    3a1b1e2h

    3.分割文件
    1.生成指定大小的文件
    $ dd if=/dev/zero bs=100k count=1 of=data.file
    注:将会生成由全零的100k文件data.file
    2.分割文件
    $ split -b 20k data.file
    xaa xab xac xad xae

    $ split -b 20k data.file -d -a 4
    x0000 x0001 x0002 x0003 x0004

    使用-d表示用数字,-a指定为4个长度

    $ split -b 20k data.file -d -a 4 hello
    hello0000 hello0001 hello0002 hello0003 hello0004
    3.用csplit来根据关键字分割文件
    $ cat > server.log
    SERVER-1
    [connection] 192.168.0.1 success
    [connection] 192.168.0.2 failed
    [disconnect] 192.168.0.3 pending
    [connection] 192.168.0.4 success
    SERVER-2
    [connection] 192.168.0.1 failed
    [connection] 192.168.0.2 failed
    [disconnect] 192.168.0.3 success
    [connection] 192.168.0.4 failed
    SERVER-3
    [connection] 192.168.0.1 pending
    [connection] 192.168.0.2 pending
    [disconnect] 192.168.0.3 pending
    [connection] 192.168.0.4 failed


    $ csplit server.log /SERVER/ -n 2 -s {*} -f server
    -b "%02d.log" ; rm server00.log
    $ ls
    server01.log server02.log server03.log server.log 
    解释:
    首先,csplit可以根据关键字来分割文件
    /[regex]/是一个模式匹配,匹配文件中的关键字,匹配成功后,
    把上一次匹配或文件的开头到匹配位置之前的内容提取出来,作
    为一个分割文件
    -n 指定生成为两个数字,如01,02,03
    -s 指定匹配多少行,{num}可指定匹配行数,*为到文件尾
    -f 指定生成文件的前缀
    -b 为指定后缀格式,%02d为两位数字
      实现了:filename = 前缀+后缀
    后面执行删除是因为第一行就出现了关键字,所以是个空文件

    http://blog.csdn.net/xiaobing_blog/article/details/9866471

  • 相关阅读:
    Javascript 生成全局唯一标识符 (GUID,UUID)
    nginx 与location语法详解
    nginx的安装与使用
    Linux上python3的安装和使用
    Linux上Redis安装和简单操作
    MySQL + centos +主从复制
    web服务基础
    linux系统基础优化及高级操作命令
    vim编辑
    Linux的基本命令
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5542859.html
Copyright © 2020-2023  润新知