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

如何识别del_size fq行并将多行内容转换为列格式?

解决方案:将del_size fq块转换为列格式

没问题!我来帮你搞定这个文本格式转换的需求~你想要把文件中以del_size fq开头的行里的连续数值,转换成清晰的两列键值格式,对吧?

用Awk实现的脚本

这是一个简洁的Awk命令,专门适配你的需求:

awk '/del_size fq/ {
    if (NR > 1) print ""  # 在不同的del_size块之间添加空行分隔,提升可读性
    print "del_size fq"
    # 提取该行中"del_size fq"之后的所有数值,分割成数组
    n = split(substr($0, length("del_size fq") + 2), arr, " ")
    # 每两个数值为一组,按列格式化输出
    for (i = 1; i <= n; i += 2) {
        printf "%-5s %s\n", arr[i], arr[i+1]
    }
}' file.txt

脚本细节解释

  • 当匹配到包含del_size fq的行时,先判断是否为第一行:如果不是,输出空行分隔不同的块
  • 先打印标题行del_size fq,保持每个块的标识清晰
  • 用substr提取标题之后的所有内容,再用split把这些数值分割成数组
  • 循环遍历数组,每次取两个元素(一个是标记值、一个是对应数值),用printf格式化输出成左对齐的两列(%-5s表示左对齐占5个字符宽度,你可以根据数值长度调整这个数值)

示例效果

假设你的file.txt内容是:

del_size fq 0 13452 -1 13034
del_size fq 0 13 -1 0 -2 2155
del_size fq 0 6600 -1 8 -2 0

运行上面的命令后,输出会变成:

del_size fq
0     13452
-1    13034

del_size fq
0     13
-1    0
-2    2155

del_size fq
0     6600
-1    8
-2    0

如果需要调整列的对齐方式或者分隔符,只需要修改printf的格式即可~比如想换成右对齐,把%-5s改成%5s就行。

内容的提问来源于stack exchange,提问作者zhongpingxu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:21:29