You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:实现Convert wrapped lines to single lines需求,将文件中每3行记录合并为单行

求助:实现Convert wrapped lines to single lines需求,将文件中每3行记录合并为单行

没问题!我来给你几个简单实用的方法,轻松把每3行的记录合并成符合要求的单行格式~

方法一:用awk处理(最推荐,简洁高效)

awk是处理文本块的利器,这个命令可以直接完成你的需求:

awk 'NR%3==1{if(NR>1)print ""; printf "%-16s", $0} NR%3!=1{printf " %s", $0} END{print ""}' your_file.txt

简单解释:

  • NR%3==1:当行号是3的倍数+1时(也就是每块的第一行,比如第1、4、7行...),如果不是第一块就先换行,然后用printf "%-16s"把编号左对齐占16个字符,保证和后面的数据有足够空格分隔。
  • NR%3!=1:剩下的两行直接把内容追加到当前记录后面。
  • END{print ""}:最后输出一个换行,确保文件末尾格式正确。

方法二:用Shell脚本循环读取

如果你习惯用shell脚本,这个写法更直观,容易理解:

#!/bin/bash
# 循环读取每三行
while true; do
    # 读取第一行(编号行),如果读不到就退出循环
    read -r line1 || break
    # 读取第二行数据
    read -r line2 || break
    # 读取第三行数据
    read -r line3 || break
    # 格式化输出:编号左对齐16位,后面接两行数据
    printf "%-16s%s %s\n" "$line1" "$line2" "$line3"
done < your_file.txt

把上面的内容保存成merge_lines.sh,给它加执行权限chmod +x merge_lines.sh,然后运行./merge_lines.sh就能得到结果啦。

方法三:用sed命令合并

sed也能完成这个任务,不过写法稍微复杂一点:

:merge
N
N
s/\n/ /g
s/^\([0-9]\)/\1                /
p
d

运行方式是sed -f merge.sed your_file.txt(把上面的sed代码保存成merge.sed),或者直接一行命令:

sed ':a;N;N;s/\n/ /g;s/^\([0-9]\)/\1                /;p;d' your_file.txt

你可以根据自己的习惯选择任意一种方法,替换your_file.txt为你实际的文件名就行~

备注:内容来源于stack exchange,提问作者Julio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:49:32