如何在保留表头的前提下将表格数值保留三位小数?
解决方案
要保留表头同时将数值列格式化为三位小数,只需修改你的awk脚本,跳过表头行的数值格式化操作,并保持制表符分隔输出(避免用sed替换空格的额外步骤):
命令实现
直接运行以下命令即可完成需求:
grep -v 'NA' TestAllScore.tsv | awk ' BEGIN { FS = "\t"; OFS = "\t" } NR == 1 { print; next } { for (i=4; i<=NF; ++i) { $i = sprintf("%.3f", $i) } print } ' > TestAllScore2.tsv
关键改进点
- 跳过表头处理:用
NR == 1 { print; next }判断第一行(表头),直接输出不做格式化,避免表头被错误转换为数值。 - 保持制表符分隔:在
BEGIN块中设置FS="\t"(输入分隔符)和OFS="\t"(输出分隔符),确保处理后的文件依然是制表符分隔,无需额外用sed替换空格。 - 仅格式化数值列:从第4列开始循环处理,精准对应样本分数列,前三列的
chr/start/end保持原样。
输出验证
处理后的文件会保留完整表头,数值列均为三位小数:
chr start end EE85756 EE85757 EE85770 EE85775 chr1 9900 10000 0.371 0.506 0.250 0.663 chr1 10000 10100 214.787 313.545 250.865 335.980 ...
内容的提问来源于stack exchange,提问作者Debajyoti Kabiraj
相关产品推荐
相关产品推荐

