这里有一个类似的问题,但对于 excel/vba Excel Macro - Comma Separated Cells to Rows Preserve/Aggregate Column
因为我有一个大文件 (>300mb) 这不是一个选项,因此我正在努力让它在 bash 中工作。

基于这些数据

 1   Cat1                 a,b,c
 2   Cat2                 d
 3   Cat3                 e
 4   Cat4                 f,g

我想将其转换为:
 1   Cat1                 a
 1   Cat1                 b
 1   Cat1                 c
 2   Cat2                 d
 3   Cat3                 e
 4   Cat4                 f
 4   Cat4                 g

最佳答案

cat > data << EOF
1   Cat1                 a,b,c
2   Cat2                 d
3   Cat3                 e
4   Cat4                 f,g
EOF

set -f                               # turn off globbing
IFS=,                                # prepare for comma-separated data
while IFS=$'\t' read C1 C2 C3; do    # split columns at tabs
    for X in $C3; do                 # split C3 at commas (due to IFS)
        printf '%s\t%s\t%s\n' "$C1" "$C2" "$X"
    done
done < data

关于linux,逗号分隔的单元格到行保留/聚合列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6103480/

10-11 15:39