我有一个文件file.tsv
,它有几列,如下所示:
# Gene Family xyz136 xyz140 xyz145 xyz147 xyz148
UNMAPPED 7650721.04472 4253028.928704 8415910.028496 7453466.3835 3282779.545448
UNGROUPED 4148127.07896 3999040.089552 4423800.370656 6066650.96145 4460845.331384
UNGROUPED|g__Absiella.s__Absiella_dolichum 0 0 8548.5181548 0 0
UNGROUPED|g__Acidaminococcus.s__Acidaminococcus_fermentans 0 0 0 0 0
UNGROUPED|g__Acidaminococcus.s__Acidaminococcus_intestini 0 0 0 0 0
UNGROUPED|g__Acidaminococcus.s__Acidaminococcus_intestini_CAG_325 0 0 0 0 0
如何通过删除小数点将此表中的所有数值转换为最接近的整数?
我希望它看起来像这张表:
# Gene Family xyz136 xyz140 xyz145 xyz147 xyz148
UNMAPPED 7650721 4253029 8415910 7453466 3282780
UNGROUPED 4148127 3999040 4423800 6066651 4460845
UNGROUPED|g__Absiella.s__Absiella_dolichum 0 0 8549 0 0
UNGROUPED|g__Acidaminococcus.s__Acidaminococcus_fermentans 0 0 0 0 0
UNGROUPED|g__Acidaminococcus.s__Acidaminococcus_intestini 0 0 0 0 0
UNGROUPED|g__Acidaminococcus.s__Acidaminococcus_intestini_CAG_325 0 0 0 0 0
注意:虽然它是一个.tsv
文件,但它看起来不像表格。我不知道应该使用哪种格式化工具。
谢谢,dc
答案1
您可以尝试numfmt
GNU Coreutils 中的实用程序:
numfmt --delimiter=$'\t' --header --format='%.0f' --field=2- <file.tsv
或者,在 awk 中类似这样的操作:
awk -F'\t' 'BEGIN{OFS=FS} NR>1 {for(i=2;i<=NF;i++) $i=int($i+0.5)} 1' file.tsv