我有一个CSV文件,它有231列,从1到231。然而,从另一个程序导出后,结果文件中的所有列都是随机顺序的,即第一列是样品15,然后是样品168,然后是样品2
文件看起来像这样:
taxon name, sample 7, sample 205, sample 56,.....
species A, 50,307,698.......
.
.
.
.
我如何得到一个输出文件,这是以下方式
taxon name, sample 1, sample 2,..., Sample 231
Species A,658, 542,753
Species B,...,...,...
.
.
.
到目前为止尝试过:
perl -F, -lane 'print join ",", sort @F'
最后得到101,..109,10,110,...,119,
等等
物种的顺序无关紧要,只要该物种的数量与相应的样本相匹配
提前感谢您的帮助!
2条答案
按热度按时间ibrsph3r1#
假设所有行都有231个样本,并且所有逗号都是字段分隔符,您可以尝试以下
awk
脚本:0x6upsns2#
安装
xsv
并尝试这个 *bash脚本 *。相关的是对
sort
的调用,您可以更改它以获得所需的列顺序:sort -h -k2
用于人工数字排序,sort -d -k2
用于字典顺序,等等。键入man sort
。当然,保存脚本
csv-arrange.sh
,授予执行权限chmod +x csv-arrange.sh
并用途:免责声明
我建议不要使用
awk
或sed
来操作CSV文件,除非您已经阅读过RFC 4180并知道您在做什么。有good CLIs用于此目的。