发布时间:2025-06-12
浏览次数:0
与生物信息领域的FASTA/Q格式相类似,CSV/TSV格式在计算机科学、数据分析和生物信息学中扮演着基础角色,其应用范围极为广泛。此类格式通常由以下处理软件进行操作:
以微软Excel为代表的电子表格软件
++/等文本编辑器
sed/awk/cut等Shell命令
各种编程语言的数据处理库。
尽管电子表格软件以及文本编辑器功能卓越,但它们对鼠标的依赖性较强,并不适宜进行大规模的数据处理。
sed、awk、cut等Shell命令通常适用于处理不带标题行的通用表格数据,它们并不适合用于包含标题行的CSV文件格式。
为了一个小操作写/R脚本也有点小题大作,且难以复用。
在csvtk开发之前,市面上已有的工具大多是编程语言编写的,比如用Rust编写的xsv和用C语言编写的工具,它们各自都有其独特的优势和不足。在我完成csvtk开发并着手投稿论文时sublime text replace,恰好有充裕的时间,于是我萌生了再创造一个新工具的想法。
因此,我选择开发一款命令行程序,用于执行针对CSV/TSV文件格式的常规任务,这款工具便是csvtk。
介绍
基本信息
特性
功能
在着手开发csvtk的前两三年里,我已成功编写了数个可重复使用的Perl脚本。
(https://.com//)
,包括、、、,,。
[[]49]
到目前为止sublime text replace,csvtk已有27个子命令,分为以下几大类:
格式转化
集合操作
编辑
排序
绘图
其它
使用
输入数据要求每行的列数一致,空行也会报错
csvtk默认输入数据含有标题行,如没有请开启全局参数-H
csvtk工具预设接收的文件类型为CSV格式,若输入的是TSV格式的数据,需记得启用全局参数中的-t选项。
输入数据列名最好唯一无重复
如果TSV中存在双引号"",请开启全局参数-l
csvtk软件将#开头的行视为注释,若数据表的表头行包含#,用户需通过全局参数-C来设定一个不常使用的字符(例如$)来替代。
例子
请查阅使用手册中的示例,以获取更多相关例子,手册地址为http://..me/csvtk/usage/。
示例数据
$ cat names.csv
身份标识,名,姓,用户名
11,"Rob","Pike",rob
2,Ken,Thompson,ken
4,"Robert","Griesemer","gri"
1,"Robert","Thompson","abc"
NA,"Robert","Abel","123"
增强可读性
在命令行中,输入以下指令:对names.csv文件执行cat操作,然后通过管道将其输出至csvtk工具,并使用pretty选项进行美化展示。
身份标识,姓名首字母,姓氏,用户名
Rob Pike,这位才华横溢的编程大师,他的贡献和影响在计算机科学领域举足轻重。他的工作不仅仅局限于编程语言的设计,更在于他对于编程哲学的深刻洞察。在他的引领下,编程世界发生了翻天覆地的变化,无数开发者受益匪浅。
Ken Thompson,这位人物,他的名字,在业界,广为人知。
Robert Griesemer 强调了禁止对特定内容进行修改的重要性,并指出这一规定适用于所有专有名词。
Robert Thompson,此人禁止对abc进行任何形式的修改。
Robert Abel,编号为123,被禁止对专有名词进行修改。
转为
将names.csv文件的内容通过cat命令输出,随后利用csvtk工具将CSV格式转换为Markdown格式。
身份标识符,姓名首字母,姓氏,用户名
该行为不得擅自变更,必须严格遵守规定,不得随意更改条款,任何擅自修改均属违规,必须保持原文的完整性,不得擅自添加或删除内容。
11 |Rob |Pike |rob
2 |Ken |Thompson |ken
4 |Robert |Griesemer|gri
1 |Robert |Thompson |abc
NA |Robert |Abel |123
效果
11
Rob
Pike
rob
Ken
ken
gri
abc
NA
Abel
123
用列或列名来选择指定列,可改变列的顺序
执行以下命令,将names.csv文件中的第三列和第一列内容分别提取出来,并对输出结果进行美化展示:使用管道将cat命令的输出传递给csvtk cut命令,指定提取第三列和第一列的数据,再通过管道将结果传递给csvtk pretty命令进行处理。
执行命令以从names.csv文件中提取最后一名和ID信息,然后通过csvtk工具进行切割和美化输出。
last_name id
Pike 11
Thompson 2
Griesemer 4
Thompson 1
Abel NA
用通配符选择多列
执行命令,将names.csv文件中的"name"和"id"字段提取出来,然后使用csvtk工具进行格式化美化展示。
姓名首字母,姓氏全称,用户名,身份标识号
罗布·派克,他犯下了11起抢劫罪行。
Ken Thompson,他坚决反对对专业知识的篡改。
Robert Griesemer在文中明确指出,……
Robert Thompson,他的身份信息为abc,编号为1。
罗伯特·亚伯,编号123,信息未公开。
取消第2、3列数据(具体做法是选取一定区间,其中-3位于区间的起始位置,而-2则位于区间的末端)。
执行命令以从names.csv文件中提取第二列和第三列的数据,然后通过csvtk工具对提取出的数据进行格式化美化显示。
执行命令以从names.csv文件中提取第三列至第二列的数据,然后通过csvtk工具进行格式化美化输出。
执行命令,从names.csv文件中提取出首名和姓氏字段,并通过csvtk工具进行切割处理,最后以美化格式输出。
id username
11 rob
2 ken
4 gri
1 abc
NA 123
按指定列搜索,默认精确匹配
执行命令以过滤名为 "names.csv" 的文件中的特定行,筛选出包含 "id" 字段的记录,然后对筛选结果进行美化显示。
id first_name last_name username
1 Robert Thompson abc
模糊搜索(正则表达式)
执行命令以筛选出names.csv文件中id列第一列的记录,然后使用csvtk工具进行正则表达式匹配,最后以美化格式输出结果。
id first_name last_name username
11 Rob Pike rob
1 Robert Thompson abc
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码