【shell】将txt文件拆成n个,文本均匀按行分布

#!/bin/bash  # 原始文件名  
source_file="/home/part.txt"# 目标文件存放目录
target_dir="/home"# 想要的近似文件数量
desired_files=2  # 请将n替换为具体的数字,比如100# 确保目标目录存在
mkdir -p "$target_dir"# 计算原始文件的总行数(这可能需要一些时间,因为文件很大)
total_lines=$(wc -l < "$source_file")# 计算每个文件应包含的行数(向上取整)
# 注意:如果total_lines不能被desired_files整除,最后一个文件可能会少几行
lines_per_file=$((total_lines / desired_files + (total_lines % desired_files > 0)))# 初始化文件计数器
file_counter=1# 当前文件已写入的行数
current_lines=0# 使用awk来拆分文件
awk -v lines="$lines_per_file" -v dir="$target_dir" '
{# 构造文件名file_name = sprintf("%s/part%03d.txt", dir, file_counter)# 打印当前行到文件print > file_name# 更新当前文件已写入的行数current_lines++# 如果当前文件已达到行数限制,准备下一个文件if (current_lines >= lines) {file_counter++current_lines = 0}
}
END {# 确保关闭最后一个文件(尽管awk在结束时会自动关闭文件)# 这里主要是为了让脚本逻辑更清晰# 在实际情况下,这行可能是多余的
}
' "$source_file"# 输出结果信息
actual_files=$((file_counter))
echo "File split into $actual_files parts in $target_dir, with approximately $lines_per_file lines per part."

注意:

  1. 请将脚本中的/path/to/your/large_file.txt替换为你的原始文件的实际路径。
  2. 请将脚本中的n替换为你希望的文件数量的具体值。但是,请注意,由于原始文件的行数可能无法被desired_files整除,因此实际生成的文件数量可能会略有不同。
  3. 这个脚本使用awk来逐行读取并写入文件,效率相对较高,特别是对于大文件。但是,由于它需要先读取整个文件来计算总行数,因此在开始拆分之前可能会有一些延迟。
  4. 文件名采用partXXX.txt的格式,其中XXX是三位数的序号。这有助于在生成大量文件时保持文件名的整洁性。
  5. 如果你的系统中有足够的内存来处理这个大文件,并且你希望进一步提高速度,可以考虑使用更专业的文本处理工具或编程语言(如Python)来实现拆分功能,这些工具可能提供了更优化的内存管理和并行处理能力。但是,对于大多数基本需求来说,上述Shell脚本应该已经足够高效。

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

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

相关文章

家用洗地机什么牌子好?四款公认品牌好的机型推荐

每个人都希望自己的家里面能够干干净净&#xff0c;就算不是一尘不染&#xff0c;也至少应该是整洁的&#xff0c;但是在这个快节奏的大环境下&#xff0c;做清洁对于人们来说&#xff0c;不是没时间&#xff0c;就是太累了。正当此时&#xff0c;一款造福懒人的神器——家用洗…

Double 4 VR虚拟仿真教学系统在商务英语课堂上的应用

随着科技的飞速发展&#xff0c;VR&#xff08;虚拟现实&#xff09;技术逐渐在教育领域展现出其独特的魅力。特别是在商务英语课堂上&#xff0c;Double 4 VR虚拟仿真教学系统正逐渐成为一种新颖而有效的教学工具。 一、Double 4 VR虚拟仿真教学系统的引入 在传统的商务英语…

4D 生物打印技术的挑战:从打印到植入,还有多远?

4D生物打印技术将时间维度融入生物打印&#xff0c;为构建具有动态特性和功能的生物组织结构提供了无限可能。然而&#xff0c;要实现这些目标&#xff0c;选择合适的生物打印技术至关重要。本文将详细介绍几种主要的4D生物打印技术&#xff0c;并分析它们各自的优缺点&#xf…

Linux—— 逻辑运算符,压缩和解压缩

- -a&#xff1a; and 逻辑与 - -o&#xff1a; or 逻辑或 - -not&#xff1a; not 逻辑非 - 优先级&#xff1a;与>或>非 shell [rootserver ~]# find / -size 10k -a -size -50k [rootserver ~]# find /etc -name "e*" -o -name "f*"…

前端初学java二(类、多态、接口、内部类、泛型)

目录 类 种类 Javabean类 测试类 工具类 类的初始化 构照函数 新建对象的内存图 static 继承 This Super 虚方法表 Override 修饰符权限 构造代码块 静态代码块 多态 前提 优点 缺点 示例 抽象方法 抽象类 接口 implements 继承 内部类 成员内部类…

centos7安装mysql教程及免费数据库视图软件

文章所有命令最好在根目录&#xff0c;并以root权限 执行 Mysql安装 1. 添加 MySQL Yum Repository MySQL 官方不再维护 CentOS 7 自带的 MySQL 软件包。你需要先下载并安装 MySQL Yum Repository。 sudo yum install https://dev.mysql.com/get/mysql80-community-release…

期末考试题-通过HTML编程Vue3选项式:简易购物车

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 引用 element-plus 样式 --><!-- 注意&#xff1a;复…

React+TS 从零开始教程(4):useEffect

上一节传送门&#xff1a;ReactTS 从零开始教程&#xff08;3&#xff09;&#xff1a;useState 源码链接&#xff1a;https://pan.quark.cn/s/c6fbc31dcb02 上一节&#xff0c;我们已经学会了React的第一个Hook&#xff1a;useState。 这一节&#xff0c;我们要学习的是另一…

C语言----文件操作

1.为什么使用文件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化…

Java语言开发的一套智慧产科系统源码:产科专科电子病历系统源码

Java语言开发的一套智慧产科系统源码&#xff1a;产科专科电子病历系统源码 系统概述 电子病历系统是以住院病人为中心&#xff0c;面向医生以及护士为主的&#xff0c;涉及临床治疗、护理等业务的临床信息系统&#xff0c;以电子信息技术为手段&#xff0c;实时采集病人在整个…

【每日一练】Python遍历循环

1. 情节描述&#xff1a;上公交车(10个座位)&#xff0c;并且有座位就可以坐下 要求&#xff1a;输入公交卡当前的余额&#xff0c;只要超过2元&#xff0c;就可以上公交车&#xff1b;如果车上有空座位&#xff0c;才可以上。 seat 10 while seat > 0:money int(input(…

cookie/session/token/jwt

Cookie 定义: Cookie 是服务器发送到用户浏览器并存储在本地的小型数据片段&#xff0c;用于在客户端存储会话信息。 Cookie是Web服务器发送给浏览器的一小段数据&#xff0c;浏览器之后在每次请求同一服务器时会将这段数据回传。Cookie的主要作用是维持用户状态&#xff0c;例…

分层解耦----

分层解耦 类聚 软件中各个功能模块内部的功能联系. 例如: 高类聚示例&#xff1a;想象一下餐厅的厨房&#xff0c;每个厨师负责自己的工作站&#xff0c;一个专门做沙拉&#xff0c;一个专门烤肉&#xff0c;另一个专门做甜点。每个工作站内的工作高度类聚&#xff0c;即每个…

vite项目如何在本地启动https协议

vite项目如何在本地启动https协议 本地启动正常配置在vite.config.js文件中默认启动http协议的请求&#xff0c;如何改成https呢&#xff1f;今天的开发中遇到了这个问题项目需求&#xff1a; 本地启动https协议的前端页面并且正常访问后台https协议的接口 解决方法&#xff1a…

private修饰的方法或属性能被子类继承嘛?

先说结论&#xff1a;能。 这是一个反直觉的问题&#xff0c;毕竟大家在学习阶段接收到的知识就是&#xff1a;被privaite修饰的方法和成员变量不能被继承。 证明过程可参考文档&#xff1a;private修饰的变量如何调用_你真的熟悉java继承关系&#xff1f;那你知道父类private…

Elasticsearch:Runtime fields - 运行时字段(二)

这是继上一篇文章 “Elasticsearch&#xff1a;Runtime fields - 运行时字段&#xff08;一&#xff09;” 的续篇。 在查询时覆盖字段值 如果你创建的运行时字段与映射中已存在的字段同名&#xff0c;则运行时字段会隐藏映射字段。在查询时&#xff0c;Elasticsearch 会评估运…

MySQL 8.0新特性INTERSECT和EXCEPT用于集合运算

MySQL8.0.31 新版本的推出&#xff0c;MySQL增加了对SQL标准INTERSECT和EXCEPT运算符的支持。 1、INTERSECT INTERSECT输出多个SELECT语句查询结果中的共有行。INTERSECT运算符是ANSI/ISO SQL标准的一部分(ISO/IEC 9075-2:2016(E))。 我们运行两个查询&#xff0c;第一个会列…

Python基础小知识问答系列-获取列表中最大或最小N个元素

1. 问题: 怎么从数值列表中获取最大或最小几个元素&#xff1f; 怎么从字典元素列表中&#xff0c;获取字典中某个值最大或最小的几个字典元素&#xff1f; 2. 解决方法&#xff1a; 使用heapq模块中的nlargest、nsmallest。 示例&#xff1a; import heapqtest_list [1, 3…

事务性消息

事务性消息是一种保证消息在传递和处理过程中具有一致性、原子性、隔离性和持久性的消息传递机制。事务性消息确保在消息的发送和消费过程中&#xff0c;要么所有操作全部成功&#xff0c;要么全部失败回滚&#xff0c;从而保持数据的一致性和完整性。事务性消息通常用于需要严…

java基于ssm+vue 病人跟踪治疗信息管理系统

1病人功能模块 病人登录进入病人跟踪治疗信息管理系统可以查看首页、个人中心、病例采集管理、预约管理、医生管理、上传核酸检测报告管理、上传行动轨迹管理、病人治疗状况管理等内容。 病例采集管理&#xff0c;在病例采集管理页面可以查看账号、姓名、住院号、入院时间、病…