在Linux中将制表符分隔的文件转换为CSV的最快方法
我有一个制表符分隔的文件,其中包含超过2亿行。 在Linux中将其转换为CSV文件的最快方法是什么? 该文件的确包含多行标题信息,我需要将其删除,但是标题行数是已知的。 我已经看到有关sed和gawk的建议,但是我想知道是否存在“首选”选择。
为了澄清起见,此文件中没有嵌入的选项卡。
andrewj asked 2020-06-23T04:03:36Z
10个解决方案
73 votes
如果您担心嵌入式逗号,则需要使用稍微更智能的方法。 这是一个Python脚本,该脚本从stdin提取TSV行并将CSV行写入stdout:
import sys
import csv
tabin = csv.reader(sys.stdin, dialect=csv.excel_tab)
commaout = csv.writer(sys.stdout, dialect=csv.excel)
for row in tabin:
commaout.writerow(row)
从外壳运行它,如下所示:
python script.py < input.tsv > output.csv
Ignacio Vazquez-Abrams answered 2020-06-23T04:04:27Z
50 votes
如果您需要做的就是将所有制表符转换为逗号,则可能需要tr。
此处的空白是文字标签:
$ echo "hello world" | tr "\\t" ","<