我想计算每一行的第2列和第3列的平均值,将此值加1并打印整行。一些平均值将是浮点数。
输入文件如下所示:
chr20 2330559 2330737
chr20 2332853 2333041
chr20 2537555 2537711
输出文件:
chr20 2330648 2330649
chr20 2332947 2332948
chr20 2537633 2537634
我尝试了各种awk组合而没有成功。任何建议都会很棒! 谢谢 哈丽特
答案 0 :(得分:3)
使用awk:
awk '{$2=($2+$3)/2; $3=$2+1}1' file
您还可以使用int()
函数来确保结果为整数:
awk '{$2=int(($2+$3)/2); $3=$2+1}1' file
答案 1 :(得分:2)
试试这个单行:
awk '{a=($2+$3)/2;$2=a;$3=a+1}7' file
它给出了
chr20 2330648 2330649
chr20 2332947 2332948
chr20 2537633 2537634
答案 2 :(得分:2)
类似的东西:
awk '{ printf("%s %d %d", $1, ($2 + $3) / 2, ($2 + $3) / 2 + 1) }'
当平均值不是整数时,您没有给出任何指示。