awk中怎么实现两行合并为一行以重新构建错乱的数据库报表

轻辰大大_6561

轻辰大大_6561

2026-08-19

260人浏览

原创

处理数据库报表错乱时,可用awk按奇偶行合并、按正则识别断点拼接或跳过空行合并。方法一用nr%2交替存取;方法二依数字开头等模式判断新记录;方法三结合nf过滤空行后合并。

awk中怎么实现两行合并为一行以重新构建错乱的数据库报表

在处理错乱的数据库报表时,常见情况是原本应为一行的记录被意外折成两行(比如字段过长、导出格式异常或编码问题),这时可以用 awk 将连续的两行合并为一行。核心思路是:**用奇偶行判断控制读取节奏,或通过特定模式识别“断点”再拼接**。

方法一:简单交替合并(适用于严格两行一组)

若数据严格按“第1行+第2行=完整记录”重复排列(如无空行、无标题、无异常),可用行号取模:

  • awk 'NR%2==1 {line=$0; next} {print line, $0}' file
  • 说明:奇数行(1、3、5…)存入变量 line 并跳过输出;偶数行(2、4、6…)将上一行与当前行用空格拼接输出
  • 若需自定义分隔符(如制表符),改 print line "\t" $0

方法二:按字段数或模式识别“断点”

更稳健的方式是根据数据特征判断哪行是“续行”。例如:正常行以数字开头(ID字段),而续行以空格或特定字符开头:

Qwen
Qwen

Qwen是一款由阿里云推出的大语言模型和多模态模型系列。

下载
  • awk '/^[0-9]/ {if (line) print line; line = $0; next} {line = line $0} END{if(line) print line}' file
  • 说明:匹配以数字开头的行视为新记录起点,先输出上一条拼好的记录;否则认为是续行,直接追加到 line 后面
  • 可替换正则适配你的实际开头特征,如 ^ID、^[A-Z]{2,} 等

方法三:跳过空行并合并非空行(防干扰)

若原始文件含空行或注释行,先过滤再合并:

  • awk 'NF {if (NR%2==1) line=$0; else print line, $0}' file
  • NF 表示当前行非空字段数,NF 为真即跳过空行和纯空白行
  • 仍按奇偶逻辑合并,但只对有效数据行生效,避免空行打乱节奏

小技巧:预览与调试

合并前建议先观察规律:

  • 用 nl file | head -10 查看带行号的前10行,确认断裂模式
  • 用 awk '{print NR, NF, $0}' file | head -10 检查每行字段数是否突变
  • 测试时加 | head -5 限制输出,避免误操作刷屏

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3870

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3333

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2473

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5930

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5582

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3273

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2785

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2999

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Perl 入门教程
Perl 入门教程

共29课时 | 31.2万人学习