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

如何使用ksh脚本将键值对两列数据转换为列状表格数据?

实现方案:将“列|值”格式文件转为表头+值两行输出

针对你需要将每行列名|数据格式的文件,转换为第一行所有列名、第二行对应数据的需求,提供两种ksh实现方式:

方法一:使用awk快速处理

awk是处理文本的高效工具,一行命令即可完成转换:

awk -F'|' '{cols = cols $1 "|"; vals = vals $2 "|"} END {sub(/\|$/, "", cols); sub(/\|$/, "", vals); print cols; print vals}' input.txt

说明:

  • -F'|':指定字段分隔符为|
  • 遍历每一行时,将列名拼接至cols变量、数据拼接至vals变量,均用|分隔
  • END块中用sub去掉两个变量末尾多余的|,再分别打印表头和数据行

方法二:ksh原生循环实现

如果依赖ksh原生语法,可使用循环逐行处理:

#!/usr/bin/ksh

# 初始化存储表头和数据的变量
cols=""
vals=""

# 逐行读取文件,按|拆分列名和数据
while IFS='|' read -r col val; do
    if [ -n "$cols" ]; then
        cols="${cols}|${col}"
        vals="${vals}|${val}"
    else
        cols="$col"
        vals="$val"
    fi
done < input.txt

# 输出结果
echo "$cols"
echo "$vals"

说明:

  • IFS='|':设置读取行时的分隔符,拆分出列名和数据
  • 循环中判断变量是否为空,避免开头出现多余的|
  • 循环结束后输出整理好的表头和数据行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:36:03