新闻中心

Linux 如何合并多个文本文件?cat/sed/awk 实用技巧

2025-12-05
浏览次数:
返回列表
Linux合并文本文件首选cat,需去重用awk '!seen[$0]++',去空行加NF,跳过头尾用sed或head/tail,加行号或文件标识用awk的FILENAME/NR变量。

linux 如何合并多个文本文件?cat/sed/awk 实用技巧

Linux 合并多个文本文件最直接的方法是用 cat,但实际场景中常需去重、去空行、加序号、跳过头部/尾部、按条件筛选——这时 sedawk 就派上用场了。下面整理几类高频需求的实用写法,不讲原理,只给能立刻跑通的命令。

基础合并:cat 最常用也最可靠

把 file1.txt、file2.txt、file3.txt 顺序拼成 all.txt:

cat file1.txt file2.txt file3.txt > all.txt

合并当前目录下所有 .log 文件(按字母序):

cat *.log > merged.log

注意:通配符展开顺序依赖文件名排序,如需指定顺序,显式列出或用 find + sort 控制。

合并时去重且保持顺序:awk '!seen[$0]++'

多个文件内容有重复行,想合并后每行只保留首次出现的一次(原顺序不变):

awk '!seen[$0]++' file1.txt file2.txt file3.txt > unique.txt

  • 这个写法比 sort -u 更轻量,不改变原始行序
  • 若要去除空白行再合并去重:awk 'NF && !seen[$0]++' *.txt
  • 区分大小写;如需忽略大小写,改用 awk 'NF && !seen[tolower($0)]++'

合并时跳过每文件的前 N 行或末 N 行

比如每个日志文件开头都有 3 行头信息,不想合并进去:

简小派 简小派

简小派是一款AI原生求职工具,通过简历优化、岗位匹配、项目生成、模拟面试与智能投递,全链路提升求职成功率,帮助普通人更快拿到更好的 offer。

简小派 123 查看详情 简小派

sed '1,3d' file1.txt file2.txt | awk 'NF' > clean.log

如果要跳过每个文件的最后 2 行(适合去掉 footer):

for f in *.txt; do head -n -2 "$f"; done | awk 'NF' > no_footer.log

  • head -n -2 表示除最后两行外全部输出
  • awk 'NF' 过滤掉空行,比 grep '.' 更稳妥(能处理纯空格行)
  • 避免用 tail -n +4 直接处理多文件,它对每个文件独立计数但 cat 后会混在一起

合并并添加行号/文件标识:awk 实现灵活标记

想看出某行来自哪个文件,或加全局序号便于追踪:

awk '{print FILENAME ":" NR ": " $0}' file1.txt file2.txt > labeled.txt

只在每文件开头加个分隔线:

awk 'FNR==1{print "\n=== " FILENAME " ==="} {print}' *.conf > full.conf

  • FILENAME 是当前文件名,FNR 是当前文件内行号,NR 是总行号
  • 想加全局连续行号:awk '{print NR ": " $0}' *.txt
  • 合并时统一补前缀(如日志时间戳):awk '{print "[2025-06-15] " $0}' *.log

基本上就这些。cat 负责“搬”,sed 负责“剪裁”,awk 负责“标记+逻辑”。不用死记,遇到具体需求,先想清楚要删什么、留什么、标什么,再挑对应工具组合就行。

以上就是Linux 如何合并多个文本文件?cat/sed/awk 实用技巧的详细内容,更多请关注其它相关文章!


# 工具  # linux  # 编辑器  # 如需  # 服务管理  # 运行环境  # 跳过  # 文本文件  # 多个  # 行号  # ai  # 丽水推广网站  # 靠谱的seo平台  # 营销推广培训课件  # 麒麟seo监测  # 兴安盟网络营销推广方式  # 西藏网站推广值得推荐  # 恩平网站建设服务  # 兰州网站建设怎样做好  # 武汉官网网站优化代办  # 滨州关键词网站优化推广  # 压缩解压  # 操作步骤 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  uc手机浏览器网页版入口 uc浏览器手机版便捷登录首页  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  深入理解J*aScript Promise异步执行与微任务队列  Go语言中对Map值调用带指针接收者方法:原理与最佳实践  mc.js游戏直达 mc.js网页免下载版本秒进地址  解决Bootstrap卡片顶部边距导致背景图下移的问题  mc.js官网登录入口 mc.js官方登录入口最新版  单射、满射与双射的关系 一文理清所有逻辑  iwriter统一登录平台 iwrite账号密码登录页面  excel怎么制作工资条 excel快速生成工资条的方法  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  b站怎么删除评论_b站评论管理与删除操作  Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组  PHP中高效并行检查多链接状态的教程  解决Django多数据库/多Schema环境下外键迁移问题  C++ vector二维数组定义_C++ vector of vector用法  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  正确连接J*aScript到HTML实现可点击图片与自定义事件处理  使用Python高效删除Word宏并转换DOCM为DOCX格式  必由学官方平台入口 必由学在线课堂登录地址  CSS Box Model与弹性按钮:维持布局稳定的动画实践  菜鸟取件码是什么怎么查 最全查询渠道汇总  微博网页版首页入口 微博电脑端官网登录链接  学习通网页版快速入口 学习通官网网页版直接打开  小米汽车11月交付量突破40000台!雷军:将继续努力  c++20的std::jthread是什么_c++可中断线程与RAII式管理  手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  离线运行Go语言之旅:本地部署与GOPATH配置指南  b站赚钱渠道_b站收益来源  将HTML Canvas内容转换为可上传的图像文件(File对象)  在VS Code中配置和运行Dart程序的完整步骤  c++中为什么推荐使用using替代typedef_c++现代化类型别名  Python Socket多播通信中指定源IP地址的实践指南  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  邮政快递包裹最新位置 邮政快递实时追踪入口  学习通网页版官方登录 超星学习通电脑端入口指南  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  将JSON对象数组转置为键值对列表的实用指南  Python getattr() 异常处理深度解析:避免程序意外退出  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法 

搜索