linux用分割的csv文件读取,在Linux中将制表符分隔的文件转换为CSV的最快方法
在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" ","
hello,world
当然,如果您在文件的字符串文字中嵌入了制表符,那么这也会错误地翻译它们。 但是嵌入的文字标签很少见。
Mark Rushakoff answered 2020-06-23T04:04:03Z
20 votes
perl -lpe 's/"/""/g; s/^|$/"/g; s/\t/","/g' < input.tab > output.csv
在这种情况下,Perl通常比sed,awk和Python更快。
pabs answered 2020-06-23T04:04:47Z
8 votes
如果要将整个tsv文件转换为csv文件,请执行以下操作:
$ cat data.tsv | cut -f1,2,3 | tr "\\t" "," > data.csv
如果要省略一些字段:
$ cat data.tsv | cut -f1,2,3 | tr "\\t" "," > data.csv
上面的命令会将data.tsv文件转换为仅包含前三个字段的data.csv文件。
Gopal Kumar answered 2020-06-23T04:05:25Z
6 votes
sed -e 's/"/\\"/g' -e 's//","/g' -e 's/^/"/' -e 's/$/"/' infile > outfile
该死的批评家,引用一切,CSV不在乎。
是实际的制表符。 \ t对我没用。 在bash中,使用^ V进行输入。
Will Hartung answered 2020-06-23T04:05:49Z
5 votes
@ ignacio-vazquez-abrams的python解决方案很棒! 对于希望解析定界符其他标签的用户,该库实际上允许您设置任意定界符。 这是我处理管道分隔文件的修改版本:
import sys
import csv
pipein = csv.reader(sys.stdin, delimiter='|')
commaout = csv.writer(sys.stdout, dialect=csv.excel)
for row in pipein:
commaout.writerow(row)
jtlai answered 2020-06-23T04:06:10Z
3 votes
假设您不想更改标题并且假设您没有嵌入式选项卡
# cat file
header header header
one two three
$ awk 'NR>1{$1=$1}1' OFS="," file
header header header
one,two,three
NR> 1跳过第一个标头。 您提到您知道标题的行数,因此请根据您的情况使用正确的数字。 这样,您也无需调用任何其他外部命令。 只有一个awk命令可以完成这项工作。
如果您有空白列并且您对此很在意,则可以采用另一种方法。
awk 'NR>1{gsub("\t",",")}1' file
使用sed
sed '2,$y/\t/,/' file #skip 1 line header and translate (same as tr)
ghostdog74 answered 2020-06-23T04:06:43Z
1 votes
您也可以为此使用xsv
xsv input -d '\t' input.tsv > output.csv
在我对300MB tsv文件的测试中,它大约比python解决方案快5倍(2.5秒vs. 14秒)。
mloughran answered 2020-06-23T04:07:08Z
0 votes
以下awk oneliner支持引号+引号转义
printf "flop\tflap\"" | awk -F '\t' '{ gsub(/"/,"\"\"\"",$i); for(i = 1; i <= NF; i++) { printf "\"%s\"",$i; if( i < NF ) printf "," }; printf "\n" }'
给
"flop","flap""""
coderofsalvation answered 2020-06-23T04:07:32Z
-1 votes
我认为最好不要整理文件,因为在大文件的情况下可能会产生问题。 更好的方法可能是
$ tr ',' '\t' < csvfile.csv > tabdelimitedFile.txt
该命令将从csv file.csv获取输入,并将结果存储为以制表符分隔的File.txt中的制表符
Mian Asbat Ahmad answered 2020-06-23T04:08:01Z
linux用分割的csv文件读取,在Linux中将制表符分隔的文件转换为CSV的最快方法相关推荐
- linux 文件读取 监控,linux 文件系统的监控
完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个 1.哈希对比 2.签名校验 3.inotify 方法有2个: A.定期检测,例如通过cron或程序内置计时器 B.实时检测 ...
- linux文件读取程序,Linux系统编程:文件的读取写入
一.read系统调用 一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节 函数原型: ssize_t ...
- c语言 文件读取z整行操作,C语言文件操作函数之ferror feof clearerr
这些函数都是和文件读写时发生错误有关,下面一一分析: 1:ferror 原型:int ferror(FILE * fp) 作用:测试一个文件流是否被设置了错误标识符,如果是返回非 0 整数,否则返回 ...
- C语言文件读取错误怎么解决,c语言中文件随机读取出错如何解决
在一个链表中找出相同的结点的算法与之相似,不过对于文件来说有点烦. 因为在C语言中对流式文件进行操作时,打开文件后,有一个读写位置指针,记录的是读写时在文件中的位置,其初始状态与打开方式有关.r.r+ ...
- 错误: 必须限制口令文件读取访问 jmxremote.password 有图示 文件访问权限问题配置
错误: 必须限制口令文件读取访问 jmxremote.password can happen if the owner of jmxremote.password is not the same as ...
- python读取nc文件并转换成csv_Python提取netCDF数据并转换为csv文件
netCDF全称是network Common Data Format(网络通用数据格式),是由美国大学大气研究协会(University Corporation for Atmospheric Re ...
- linux内核态加速文件读取,学习在kernel态下使用NEON对算法进行加速的方法
本文跟着小编一起来学习在linux kernel态下如何使用NEON对算法进行加速的技巧,内容通过图文实例给大家做了详细分析,一起来看下. ARM处理器从cortex系列开始集成NEON处理单元,该单 ...
- php 制表符分隔csv,CSV(逗号分隔)、文本文件(制表符分隔) 等文件的读取
简单的用EXCEL对照测试过 #include #include #include templatebool csvread( const char* filename, callbackfun cb ...
- python中文件读取_如何从Python中的文件读取字节
类似于 this问题,我试图读取ID3v2标记头并且无法弄清楚如何在python中获取单个字节. 我首先将所有十个字节读入一个字符串.然后我想解析各个信息. 我可以在字符串中获取两个版本号字符,但后来 ...
最新文章
- 数据结构之队列、双端队列
- linux 挂载 nfs 权限,linux – 如何允许写入已挂载的NFS分区
- sscanf操作字符串和整型的区别
- Unity3D研究院之Inspector面板枚举的别名与排序
- 智能合约重构社会契约(9)Fabric
- 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记
- 深度学习保姆级入门教程 -- 论文+代码+常用工具
- 解决: service endpoint with name xxx already exists
- 前台传JSON到后台
- Posix信号量操作函数
- TensorFlow实现去噪自编码器及使用—Masking Noise Auto Encoder
- (经典)详解WINDOWS映像劫持技术
- 开源加速器Gemmini代码解析(一):脉动阵列
- 使用Bochs写Hello world
- 快速搭建免费的个人网站
- 信息检索笔记(一):布尔检索
- My summery
- 控制性详细规划图纸成果及深度要求
- 洛谷-P1478-陶陶摘苹果(升级版)
- 电脑为什么无法更改计算机,电脑打不开更改电脑设置怎么办
热门文章
- 【智能制造】45张精炼PPT解读智能工厂建设与MES应用
- 争对让望对思野葛对山栀注解_笠翁对韵·上卷·四支在线阅读-翻译及赏析
- ESP8266+SH1106 OLED屏实现天气预报+温度显示+NTP时间同步6屏带中文显示V7.5版
- securefx 堡垒机_本网站服务器在美国维
- python练习之excel表格管理
- 计算机怎么设置搜索桌面,桌面记事本,教您如何在电脑桌面添加好用的便签!...
- 仿作小米官网-乞丐版
- 查询塑料塑胶材料属性参数的网站数据库
- 数据结构折半查找例题_数据结构查找习题及答案
- 墨尔本大学计算机科学硕士,墨尔本大学计算机专业硕士已经开放申请