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

PowerShell中如何将冒号分隔的单CSV字段拆分多列并自定义表头

实现方法

下面给出三种常用场景的实现方案:

方案1:awk命令实现(类Unix系统最快方案)

如果你的CSV文件每行就是示例中的冒号分隔格式,直接执行以下命令:

BEGIN {
    FS=":"
    printf "%-12s %-3s %-4s %-4s %-12s %-14s %s\n", "USERNAME", "X", "UID", "GID", "DESCRIPTION", "HOMEDIR", "SHELL"
    print "----------"
}
{
    printf "%-12s %-3s %-4s %-4s %-12s %-14s %s\n", $1, $2, $3, $4, $5, $6, $7
}

将上述代码保存为split.awk,运行命令即可得到目标输出:

awk -f split.awk 你的文件路径.csv

如果需要拆分的是CSV中的某一列(比如CSV本身用逗号分隔,要拆分第3列),修改脚本如下:

BEGIN {
    FS=","
    printf "%-12s %-3s %-4s %-4s %-12s %-14s %s\n", "USERNAME", "X", "UID", "GID", "DESCRIPTION", "HOMEDIR", "SHELL"
    print "----------"
}
{
    split($3, arr, ":")
    printf "%-12s %-3s %-4s %-4s %-12s %-14s %s\n", arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]
}

方案2:csvkit实现(专业CSV处理,避免特殊字符出错)

csvkit是专门处理CSV的命令行工具,先安装:

# Debian/Ubuntu
apt install csvkit
# pip通用安装
pip install csvkit

假设你要拆分的列名为content(替换为你实际的列名),执行命令:

csvcut -c content 你的文件.csv | sed '1d' | awk -F: 'BEGIN{print "USERNAME,X,UID,GID,DESCRIPTION,HOMEDIR,SHELL"} {print $1","$2","$3","$4","$5","$6","$7}' | csvlook

输出直接是对齐的格式化表格。

方案3:Python实现(跨平台通用)

以下脚本可在Windows/Linux/macOS通用:

import csv

# 按需修改以下配置
INPUT_CSV_PATH = "你的输入文件.csv"
TARGET_COLUMN_INDEX = 2  # 要拆分的列的序号,从0开始计数
OUTPUT_HEADERS = ["USERNAME", "X", "UID", "GID", "DESCRIPTION", "HOMEDIR", "SHELL"]

# 打印表头
print("{:<12} {:<3} {:<4} {:<4} {:<12} {:<14} {}".format(*OUTPUT_HEADERS))
print("-" * 10)

with open(INPUT_CSV_PATH, "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    # 如果原CSV没有表头,注释掉下面这行
    next(reader)
    for row in reader:
        split_parts = row[TARGET_COLUMN_INDEX].split(":")
        print("{:<12} {:<3} {:<4} {:<4} {:<12} {:<14} {}".format(*split_parts))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:36:08