0

各行の列 2 と列 3 の平均を計算し、この値に 1 を加えて行全体を出力したいと思います。平均値の一部は浮動小数点数になります。

入力ファイルは次のようになります。

chr20 2330559 2330737
chr20 2332853 2333041
chr20 2537555 2537711

出力ファイル:

chr20 2330648 2330649
chr20 2332947 2332948
chr20 2537633 2537634

awk のさまざまな組み合わせを試しましたが、成功しませんでした。どんな提案も素晴らしいでしょう!ありがとうハリエット

4

3 に答える 3

3

これには awk を使用します。

awk '{$2=($2+$3)/2; $3=$2+1}1' file

int()関数を使用して、結果が整数であることを確認することもできます。

awk '{$2=int(($2+$3)/2); $3=$2+1}1' file
于 2013-08-29T15:36:51.520 に答える
2

このワンライナーを試してください:

awk '{a=($2+$3)/2;$2=a;$3=a+1}7' file

それは与えます

chr20 2330648 2330649
chr20 2332947 2332948
chr20 2537633 2537634
于 2013-08-29T15:37:31.133 に答える
2

何かのようなもの:

awk '{ printf("%s %d %d", $1, ($2 + $3) / 2, ($2 + $3) / 2 + 1) }'

平均が整数でない場合に何が起こるべきかについては、何の指示もありませんでした。

于 2013-08-29T15:40:49.487 に答える