我是靠谱客的博主 包容人生,最近开发中收集的这篇文章主要介绍BASH脚本基础:文件切分与合并过程切分文件合并文件执行示例1:按行切分与合并的过程执行示例2:按行文件大小切分与合并的过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

这篇文章介绍一下文件切分和合并的建议过程,使用split进行切分,使用cat进行合并,结合md5sum进行完整性验证,使用其他方式实现的话,整体的流程是可以参考的。


切分文件

使用split命令进行文件切分,一般常用两种方式,

方式1: 按行切分

对于文本格式的文件可以使用按行切分的方法, 切分命令如下所示

执行命令:split -l 切分行数 待切分的源文件 切分后的文件名前缀

方式2: 按大小切分

对于二进制文件一般可以使用按照大小的方式来切分,比如1000M一个文件的方式,切分命令如下所示:

执行命令:split -b 切分的大小 待切分的源文件 切分后的文件名前缀

注:切分后的文件名前缀指定之后,split会按照相应格式在后面添加aa、ab、ac等后缀以表示顺序,如果不指定,缺省会以x作为前缀,即会生成xaa、xab、xac等文件名称,无论方式1还是方式2均是如此。

合并文件

合并文件使用cat即可,由于切分时已经按照字母顺序生成文件名称了,所以使用如下命令即可合并文件了

执行inkling:cat 切分后的文件名前缀* >新文件名


执行示例1:按行切分与合并的过程

此处以Linux的message日志文件为例进行切分与合并的说明。

事前准备和确认

[root@liumiaocn ~]# cp /var/log/messages .
[root@liumiaocn ~]# wc -l messages*
3131 messages
[root@liumiaocn ~]#

步骤1: 确认切分前文件的md5校验和并校验

[root@liumiaocn ~]# md5sum messages >md5.checksum.messages
[root@liumiaocn ~]# cat md5.checksum.messages 
6aab9c1295927a1fd774fa191d8418dd  messages
[root@liumiaocn ~]# md5sum -c md5.checksum.messages 
messages: OK
[root@liumiaocn ~]# 

步骤2: 安行切分文件(1000行)

[root@liumiaocn ~]# split -l 1000 messages messages.split.
[root@liumiaocn ~]# ls messages*
messages  messages.split.aa  messages.split.ab  messages.split.ac  messages.split.ad
[root@liumiaocn ~]# wc -l messages*
  3131 messages
  1000 messages.split.aa
  1000 messages.split.ab
  1000 messages.split.ac
   131 messages.split.ad
  6262 total
[root@liumiaocn ~]# 

步骤3: 下载切分的文件并合并

  • 下载切分文件
liumiaocn:merge liumiao$ sftp liumiaocn
Connected to liumiaocn.
sftp> mget messages.split.*
Fetching /root/messages.split.aa to messages.split.aa
/root/messages.split.aa                                                                               100%   82KB   5.1MB/s   00:00    
Fetching /root/messages.split.ab to messages.split.ab
/root/messages.split.ab                                                                               100%   81KB  17.4MB/s   00:00    
Fetching /root/messages.split.ac to messages.split.ac
/root/messages.split.ac                                                                               100%   83KB   2.0MB/s   00:00    
Fetching /root/messages.split.ad to messages.split.ad
/root/messages.split.ad                                                                               100%   12KB  10.2MB/s   00:00    
sftp> get md5.checksum.messages
Fetching /root/md5.checksum.messages to md5.checksum.messages
/root/md5.checksum.messages                                                                           100%   43    32.3KB/s   00:00    
sftp> exit
liumiaocn:merge liumiao$ wc -l *
       1 md5.checksum.messages
    1000 messages.split.aa
    1000 messages.split.ab
    1000 messages.split.ac
     131 messages.split.ad
    3132 total
liumiaocn:merge liumiao$ cat md5.checksum.messages 
6aab9c1295927a1fd774fa191d8418dd  messages
liumiaocn:merge liumiao$ wc -l messages
    3131 messages
liumiaocn:merge liumiao$ 

步骤4: 对合并结果进行完整性检查

liumiaocn:merge liumiao$ md5sum -c md5.checksum.messages 
messages: OK
liumiaocn:merge liumiao$ 

执行示例2:按行文件大小切分与合并的过程

此处以Subversion Edge的5.2.4安装文件为例进行切分与合并的说明。

事前准备和确认

[root@liumiaocn ~]# du -k CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz 
97036	CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
[root@liumiaocn ~]# 

步骤1: 确认切分前文件的md5校验和并校验

[root@liumiaocn ~]# md5sum CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz >md5.checksum.edge
[root@liumiaocn ~]# cat md5.checksum.edge 
0862eaba2dd1b048dc6c10cb2b1e910b  CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
[root@liumiaocn ~]# 
[root@liumiaocn ~]# md5sum -c md5.checksum.edge 
CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz: OK
[root@liumiaocn ~]# 

步骤2: 安行切分文件(30M)

[root@liumiaocn ~]# split -b 30m CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz CollabNet.split.
[root@liumiaocn ~]# du -k CollabNet*
30720	CollabNet.split.aa
30720	CollabNet.split.ab
30720	CollabNet.split.ac
4876	CollabNet.split.ad
97036	CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
[root@liumiaocn ~]# 

步骤3: 下载切分的文件并合并

  • 下载切分文件
liumiaocn:merge liumiao$ sftp liumiaocn
Connected to liumiaocn.
sftp> mget CollabNet.split.*   
Fetching /root/CollabNet.split.aa to CollabNet.split.aa
/root/CollabNet.split.aa                                                                              100%   30MB  24.0MB/s   00:01    
Fetching /root/CollabNet.split.ab to CollabNet.split.ab
/root/CollabNet.split.ab                                                                              100%   30MB  24.2MB/s   00:01    
Fetching /root/CollabNet.split.ac to CollabNet.split.ac
/root/CollabNet.split.ac                                                                              100%   30MB   5.6MB/s   00:05    
Fetching /root/CollabNet.split.ad to CollabNet.split.ad
/root/CollabNet.split.ad                                                                              100% 4875KB  20.4MB/s   00:00    
sftp> get md5.checksum.edge
Fetching /root/md5.checksum.edge to md5.checksum.edge
/root/md5.checksum.edge                                                                               100%   84    66.1KB/s   00:00    
sftp> exit
liumiaocn:merge liumiao$ 
liumiaocn:merge liumiao$ cat md5.checksum.edge 
0862eaba2dd1b048dc6c10cb2b1e910b  CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
liumiaocn:merge liumiao$ cat CollabNet.split.* >CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
liumiaocn:merge liumiao$

步骤4: 对合并结果进行完整性检查

liumiaocn:merge liumiao$ md5sum -c md5.checksum.edge 
CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz: OK
liumiaocn:merge liumiao$ 

最后

以上就是包容人生为你收集整理的BASH脚本基础:文件切分与合并过程切分文件合并文件执行示例1:按行切分与合并的过程执行示例2:按行文件大小切分与合并的过程的全部内容,希望文章能够帮你解决BASH脚本基础:文件切分与合并过程切分文件合并文件执行示例1:按行切分与合并的过程执行示例2:按行文件大小切分与合并的过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部