Text-Processing
將 CSV 轉換為 TSV
我有許多大型 CSV 文件,並希望它們採用 TSV(製表符分隔格式)。複雜之處在於 CSV 文件的欄位中有逗號,例如:
A,,C,"D,E,F","G",I,"K,L,M",Z
預期輸出:
A C D,E,F G I K,L,M Z
(中間的空格是“硬”標籤)
我在這台伺服器上安裝了 Perl、Python 和 coreutils。
Python
添加到名為 的文件
csv2tab
,並使其可執行
touch csv2tab && chmod u+x csv2tab
添加到它
#!/usr/bin/env python import csv, sys csv.writer(sys.stdout, dialect='excel-tab').writerows(csv.reader(sys.stdin))
試執行
$ echo 'A,,C,"D,E,F","G",I,"K,L,M",Z' | ./csv2tab A C D,E,F G I K,L,M Z
$ ./csv2tab < data.csv > data.tsv && head data.tsv 1A C D,E,F G I K,L,M Z 2A C D,E,F G I K,L,M Z 3A C D,E,F G I K,L,M Z
使用
csvkit
(Python),例如:$ csvformat -T in.csv > out.txt
流式傳輸,正確的 CSV 和 TSV 引用和轉義
它在 apt 和其他包管理器中