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

在Bash中如何将多列文本转换为单列长文本?

Bash多列文本转单列实现方法

以下方法适配你给出的键值对格式(单空格分隔键值,双空格分隔不同键值对),按你的需求场景选择即可:

场景1:按列优先输出(和你给出的预期输出完全匹配)

输出顺序为先打印所有行的第一列键值对,再打印所有行的第二列,以此类推,用awk实现最稳定:

awk -F'  ' '{
    for (col = 1; col <= NF; col++) {
        col_content[col] = col_content[col] ? col_content[col] "\n" $col : $col
    }
}
END {
    for (i = 1; i <= length(col_content); i++) {
        print col_content[i]
    }
}' 你的文件路径.txt

鲁棒性优化:如果你的文本列之间的空白不固定(混有制表符、空格数量不一致),可以把命令开头的-F' '替换为BEGIN{FPAT = "[^[:space:]]+[[:space:]]+[^[:space:]]+"},自动识别每个二元键值对,不需要固定分隔符。


场景2:按行优先输出

如果不需要按列排序,只要把所有键值对拆为每行一个,顺序和原文本从左到右、从上到下的出现顺序一致,可以用更简单的命令:

方法1:xargs实现

xargs -n 2 < 你的文件路径.txt

-n 2参数指定每次读取2个空白分隔的参数输出为一行,刚好适配二元键值对结构。

方法2:sed实现

sed 's/  /\n/g' 你的文件路径.txt

直接把所有双空格分隔符替换为换行符,实现拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:08