美文网首页
文本切割工具——split命令的使用

文本切割工具——split命令的使用

作者: moutory | 来源:发表于2024-06-03 19:16 被阅读0次

    前言

    在工作中偶尔会需要将一个大文件切割为若干个小文件的需求,其实这种功能当然可以用代码来实现,不过linux系统就已经自带了split命令可以让我们快速实现文件切割这个功能,还支持我们进行文件的重命名,下面进入正题来讲一下这个命令的使用。

    一、split命令的语法

    split [选项]... [输入 [前缀]]
    
    参数 含义
    - -b 或者-- bytes=size 对file进行切分 每个小文件大小为size 可以指定单位b,k,m
    - -l -- lines=number 对file进行切分 每个文件都有number行
    - -a num 后缀长度,和生成切割后的文件名相关
    -d 表示切割后的文件使用数字后缀
    - -c <字节> 与参数"-b"相似,但是在切割时将尽量维持每行的完整性

    二、案例演示

    准备测试数据,生成一个数字组成的文件,总大小48K

    echo {1..10000} > a.txt
    
    image.png
    案例1:根据10K作为一个单位进行文本切割
    split -b 10k a.txt 
    
    执行结果1
    可以看到,文件确实被分割成多个文件了,而且是以xaa开始依次递增排序。
    案例2:根据100行作为一个单位进行文本切割
    split -l 100 a.txt 
    
    执行结果2
    案例3:按100行进行切割,且前缀名统一为“result”,后缀部分改成用4位数字来表示
     split -l 100 a.txt -d -a 4 result
    

    下面来简单介绍一下这里的参数作用

    • -l 100 表示根据100行作为切割单位
    • -d -a 4 表示根据数字来作为后缀,且数字位的长度为4
    • result 表示使用result作为文件名前缀
    image.png

    三、命令的缺陷和优化方案——让命令支持自定义后缀

    相信各位读者也发现了,split命令确实十分强大,但是对于文件的命名上还不够灵活,不支持命名后缀,比如我希望生成的格式是result + 4位数字 + .csv的文件,但split并不支持这样操作。我们可以结合xargs命令来满足我们的需要,把每个生成的文件进行重命名

    案例4:按1000行分割,生成的文件格式为:result_ + 3位数字 + .csv
    split -l 1000 a.txt -d -a 3 result_ && ls | grep result_ | xargs -n1 -I {} mv {} {}.csv
    

    这里我们简单介绍一下xargs命令的作用

    • -n 1 表示一次只接受1个参数
    • -I {} 表示需要替换字符串,并且把入参暂时用{}进行表示
    • mv {} {}.csv 把原文件名新增 .csv 后缀
      执行结果

    相关文章

      网友评论

          本文标题:文本切割工具——split命令的使用

          本文链接:https://www.haomeiwen.com/subject/rgusqjtx.html