Linux如何对文件进行分割和重组

csplit,split 和 cat 来重新整理文件,然后再将文件合并在一起。这些操作在任何文件类型下都有用:文本、图片、音频文件、ISO 镜像文件等。

使用 csplit 分割文件

csplit 将单个文件分割成多个文件。

[root@k8s-master-node1 test]# cat 1
1
2
3
4
5
6
[root@k8s-master-node1 test]#

它将文件 1 分为三个文件,以行号 2 和 5 作为分割点

[root@k8s-master-node1 test]# csplit 1 2 5
2
6
5
[root@k8s-master-node1 test]#

csplit 在当前目录下创建了三个新文件,并以字节为单位打印出新文件的大小。默认情况下,每个新文件名为 xx_nn:

[root@k8s-master-node1 test]# ls
1 xx00 xx01 xx02
[root@k8s-master-node1 test]#

分别查看内容

[root@k8s-master-node1 test]# cat xx00
1
[root@k8s-master-node1 test]# cat xx01
2
3
4
[root@k8s-master-node1 test]# cat xx02
5
6[root@k8s-master-node1 test]#

如果要将文件分割成包含相同行数的多个文件如何操作呢?

可以指定行数,然后将重复次数放在在花括号中。此示例重复分割 4 次,并将剩下的转储到最后一个文件中

[root@k8s-master-node1 test]# csplit 1 1 {4}
0
2
2
2
2
5

可以使用星号通配符来告诉 csplit 尽可能多地重复分割。这听起来很酷,但是如果文件不能等分,则会失败(低版本的 csplit 不支持此参数)

[root@k8s-master-node1 test]# csplit 1 1 {*}
0
2
2
2
2
2
2
1
csplit: ‘1’: line number out of range on repetition 7
[root@k8s-master-node1 test]# cat 1 |wc -l
7
[root@k8s-master-node1 test]#

默认的行为是删除发生错误时的输出文件。

可以用 -k 选项来解决这个问题,当有错误时,它就不会删除输出文件。

另一个行为是每次运行 csplit 时,它将覆盖之前创建的文件,如果需要使用新的文件名来分别保存它们。可以使用使用 --prefix= prefix 来设置一个不同的文件前缀:

[root@k8s-master-node1 test]# csplit -k --prefix=mine 1 1 {*}
0
2
2
2
2
2
2
1
csplit: ‘1’: line number out of range on repetition 7
[root@k8s-master-node1 test]# ls
1 mine00 mine01 mine02 mine03 mine04 mine05 mine06 mine07
[root@k8s-master-node1 test]#

-n 可用于改变对文件进行编号的数字位数(默认是 2 位):

[root@k8s-master-node1 test]# ls
1 mine0 mine1 mine2 mine3 mine4 mine5 mine6 mine7
[root@k8s-master-node1 test]#

csplit 中的 “c” 是上下文(context)的意思。也就是说可以根据任意匹配的方式或者巧妙的正则表达式来分割文件。

下面的例子将文件分为两部分。第一个文件在包含第一次出现 “3” 的前一行处结束,第二个文件则以包含 “3” 的行开头。

[root@k8s-master-node1 test]# csplit 1 /3/
4
9
[root@k8s-master-node1 test]# ls
1  xx00  xx01
[root@k8s-master-node1 test]# cat xx00
1
2
[root@k8s-master-node1 test]# cat xx01
3
4
5
6[root@k8s-master-node1 test]#

在每次出现 “3” 时分割文件:

[root@k8s-master-node1 test]# cat 1
1
2
3
3
4
5
6
[root@k8s-master-node1 test]#
[root@k8s-master-node1 test]# csplit 1 /3/ {*}
4
2
9
[root@k8s-master-node1 test]# ls
1  xx00  xx01  xx02
[root@k8s-master-node1 test]# cat xx00
1
2
[root@k8s-master-node1 test]# cat xx01
3
[root@k8s-master-node1 test]# cat xx02
3
4
5
6[root@k8s-master-node1 test]#

{}  里面*可以替换为具体的数字,表述第几次出现的时候开始切割

仅当内容以包含 “3” 的行开始时才复制,并且省略前面的所有内容:

[root@k8s-master-node1 test]# cat 1
1
2
1 3
4
5
6[root@k8s-master-node1 test]# csplit 1 %3%
11
[root@k8s-master-node1 test]# ls
1  xx00
[root@k8s-master-node1 test]# cat xx00
1 3
4
5
6[root@k8s-master-node1 test]#

将文件分割成不同大小

split 与 csplit 类似。它将文件分割成特定的大小,当您将大文件分割成小的多媒体文件或者使用网络传送时,速度便会快很多。

默认的大小为 1000 行

# split 1.mv
# ls -hl
266K Aug 21 16:58 xaa
267K Aug 21 16:58 xab
315K Aug 21 16:58 xac
[...]

它们分割出来的大小相似,但你可以指定任何你想要的大小。这个例子中是 10M 字节

# split -b 10M 1.mv

尺寸单位缩写为 K,M,G,T,P,E,Z,Y(1024 的幂)或者 KB,MB,GB 等等(1000 的幂)。

为文件名自定义前缀和后缀:

# split -a 3 --numeric-suffixes=9 --additional-suffix=mine 1.mv SB
240K Aug 21 17:44 SB009mine
214K Aug 21 17:44 SB010mine
220K Aug 21 17:44 SB011mine

-a 选项控制编号的数字位置。

--numeric-suffixes 设置编号的开始值。默认前缀为 x,你也可以通过在文件名后输入它来设置一个不同的前缀。

将分割后的文件合并

你可能想在某个时候重组你的文件。常用的 cat 命令就用在这里:

# cat SB0* > 2.txt

示例中的星号通配符将匹配到所有以 SB0 开头的文件,但是结果可能有排查。所以使用问号通配符进行更精确的匹配,每个字符使用一个问号:

# cat SB0?????? > 2.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【UE】制作物体逐渐溶解消失并且可以复原的效果

效果 步骤 1. 新建一个工程,创建一个Basic关卡,添加第三人称游戏和初学者内容包资源到内容浏览器 2. 找到并打开初学者内容包中椅子的材质“M_Chair” 将混合模式改为“已遮罩” 在材质图表中添加如下节点 此时我们就可以通过参数“FadeAmount”来控制…

挑战52天学小猪佩奇笔记--day17

52天学完小猪佩奇--day17 ​【本文说明】 本文内容来源于对B站UP 脑洞部长 的系列视频 挑战52天背完小猪佩奇----day17 的视频内容总结,方便复习。强烈建议大家去关注一波UP,配合UP视频学习。 day17的主题:青蛙、小虫和蝴蝶 人物对话&#x…

CENTOS 按装 dubbo--admin

1,下载 Releases apache/dubbo-admin GitHub https://github.com/apache/dubbo-admin/archive/refs/tags/0.6.0.tar.gz 2,配置 解压文件,编辑项目配置文件dubbo-admin-server/src/main/resources/application.properties # dubbo-admi…

Echarts基础

Echarts基础 1.echarts案例1-最简配置 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conten…

Debian openmediavault 自建Nas系统共享,raid5与btrfs文件系统无损原数据扩容

一、适用环境 1、企业自有物理专业服务器&#xff0c;一些敏感数据不外流时&#xff0c;使用openmediavault自建NAS系统&#xff1b; 2、在虚拟化环境中自建NAS系统&#xff0c;用于内网办公&#xff0c;或出差外网办公时&#xff0c;企业内的文件共享&#xff1b; 3、虚拟化环…

AutoGen多代理对话项目示例和工作流程分析

在这篇文章中&#xff0c;我将介绍AutoGen的多个代理的运行。这些代理将能够相互对话&#xff0c;协作评估股票价格&#xff0c;并使用AmCharts生成图表。 我们创建对话的目的是要求代理分析特定公司的股票价格&#xff0c;并制作股票价格图表。 为了实现这一目标&#xff0c;…

【LeetCode周赛】LeetCode第375场周赛

【LeetCode周赛】LeetCode第375场周赛 目录 统计已测试设备(简单模拟题)双模幂运算(快速幂)统计最大元素出现至少 K 次的子数组(简单数学题)统计好分割方案的数目(合并区间组合数学快速幂) 统计已测试设备(简单模拟题) 统计已测试设备 分析&#xff1a; 本题数据范围较小&…

Unity | Shader基础知识(第一集:unity中最简单的shader)

一、unity的shader unity写的shader并不是真正意义上的shader。 简单解释&#xff1a;真正的shader语言写起来还是麻烦的&#xff0c;unity希望大家写起来简单一点&#xff0c;于是在原来的基础上&#xff0c;给大家优化了一个语言&#xff0c;叫shaderLab&#xff0c;所以我…

四、编写第一个 Shell 脚本

一、编写 Shell 脚本内容 打开文本编辑器&#xff08;可以使用 vi/vim 命令来创建文件&#xff09;&#xff0c;新建一个文件 chaoqing.sh&#xff0c;扩展名为 sh &#xff08;sh 表示 shell&#xff09;&#xff0c;扩展名不影响脚本的运行。 输入一些代码&#xff0c;如下…

OpenHarmony应用编译 - 如何在源码中编译复杂应用

功能简介 在OpenHarmony系统中预安装应用的hap包会随系统编译打包到镜像中&#xff0c;目前有两种编译预安装应用hap包的方式&#xff0c;一种为随系统编译时&#xff0c;编译应用源码生成hap包的方式&#xff0c;另一种是将已生成的hap包放入系统源码中&#xff0c;再进行打包…

跨境电商如何利用跨境客服软件提升销售额

随着全球化的推进&#xff0c;跨境电商成为了许多企业拓展市场的重要途径。然而&#xff0c;跨境电商面临着语言、文化、时差等多种挑战&#xff0c;为了提供更好的客户服务并提升销售额&#xff0c;跨境电商需要利用跨境客服软件。本文将探讨跨境电商如何利用跨境客服软件来提…

HarmonyOS:NativeWindow 开发指导

场景介绍 NativeWindow 是 HarmonyOS 本地平台化窗口&#xff0c;表示图形队列的生产者端。开发者可以通过 NativeWindow 接口进行申请和提交 Buffer&#xff0c;配置 Buffer 属性信息。 针对 NativeWindow&#xff0c;常见的开发场景如下&#xff1a; ● 通过 NativeWindow…

Day35 贪心算法 part04

Day35 贪心算法 part04 860.柠檬水找零 pass 406.根据身高重建队列 pass

小航助学2023年9月电子学会Scratch一级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 单选题2.00分 删除编辑附件图文 答案:C 第1题下列哪项内容是不可以修改的&#xff1f;&#xff08; &#xff09; A、角色名称B、造型名称C、舞台名称D、背景名…

SpringBoot使用注解实现参数校验

文章目录 参数校验- Validation- Hibernate Validator 校验注解注解通用属性- Validator 内置注解- Hibernate Validator 附加注解 校验开启Valid和Validated 校验分类- Controller校验- Spring Bean校验 校验使用- Controller&#xff1a;参数对象校验- Spring Bean&#xff1…

关系模式化的规范化理论

数据库规范化中的“函数依赖”是理解和应用规范化过程的关键概念。函数依赖描述了一个或多个列&#xff08;属性&#xff09;如何唯一确定另一个列的值。 函数依赖的基本概念&#xff1a; 函数依赖&#xff1a;如果在一个给定的关系中&#xff0c;对于某个属性集合 ( A ) 的每…

巧用RTL原语实现MUX门级映射

对于前端设计人员&#xff0c;经常会需要一个MUX来对工作模式&#xff0c;数据路径进行明确&#xff08;explicit&#xff09;的声明&#xff0c;这个对于中后端工程师下约束也很重要。这里介绍一种巧用的RTL原语&#xff0c;实现MUX的方法。闲言少叙&#xff0c;ICerGo&#x…

如何退回chrome旧版ui界面?关闭Chrome浏览器新 UI 界面

之前启用新UI的方式 Chrome 已经很久没有进行过大的样式修改&#xff0c;但近期在稳定分支中添加了新的 flags 实验性标志&#xff0c;带来了全新的设计与外观&#xff0c;启用方式如下&#xff1a; 在 Chrome 浏览器的搜索栏中输入并访问 chrome://flags 搜索“refresh 2023…

西南科技大学数字电子技术实验六(智力竞赛抢答器的设计及FPGA实现)预习报告

一、计算/设计过程 说明&#xff1a;本实验是验证性实验&#xff0c;计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程&#xff0c;越详细越好。用公式输入法完成相关公式内容&#xff0c;不得贴手写图片。&#xff08;注意&#xff1a;从抽象公式直接得出结…

彻底解决公网ip无法访问服务器的问题

用服务器的公网ip访问突然提示页面无法访问了&#xff0c;之前还是ok的&#xff1a; 解决方案&#xff1a; 步骤1. 检查云服务器的安全组规则是否有添加80端口映射&#xff0c;如果没有需要手动添加&#xff0c;否则不能使用公网访问&#xff0c;检查了一下是有的&#xff1…