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

Bash技巧:如何将一列每行内容置于另一列同行内容下方?

解决方案

这里提供几个Bash环境下可行的命令行方案,帮你完成格式转换:

方法1:使用awk(推荐,简洁直观)

awk可直接按行处理字段,逻辑清晰:

awk 'NR==1{print $1} NR>1{print $1; print $2}' input.txt > output.txt

解释:

  • NR==1匹配第一行,只打印第一个字段Col1
  • NR>1匹配后续所有行,依次打印每行的第一个和第二个字段,自动换行

方法2:使用sed

通过文本替换实现转换:

sed -e '1s/ .*//' -e '2,$s/[[:space:]]\+/\n/' input.txt > output.txt

解释:

  • 1s/ .*//:第一行删除第一个空格及后面的所有内容,只保留Col1
  • 2,$s/[[:space:]]\+/\n/:从第二行到最后一行,把任意数量的空白字符替换成换行符

方法3:使用cut和cat组合

如果需要分步处理,可以拆分列后合并:

# 提取第一列(含标题)
cut -d' ' -f1 input.txt > temp_col1.txt
# 提取第二列(跳过标题行)
cut -d' ' -f2 input.txt | tail -n +2 > temp_col2.txt
# 合并两个文件
cat temp_col1.txt temp_col2.txt > output.txt
# 清理临时文件(可选)
rm temp_col1.txt temp_col2.txt

解释:

  • cut命令按空格分隔提取列,tail -n +2跳过第二列的标题行
  • 最后用cat合并两部分内容得到目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:30:15