簡體   English   中英

Unix Shell腳本中的算術

[英]Arithmetic in Unix shell Script

我想計算每行第2列和第3列的平均值,將此值加1並打印整行。 一些平均值將是浮點數。

輸入文件如下所示:

chr20 2330559 2330737
chr20 2332853 2333041
chr20 2537555 2537711

輸出文件:

chr20 2330648 2330649
chr20 2332947 2332948
chr20 2537633 2537634

我嘗試了各種awk組合,但均未成功。 任何建議都很好! 謝謝哈麗雅特

為此使用awk:

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

您還可以使用int()函數來確保結果為整數:

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

試試這個單線:

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

它給

chr20 2330648 2330649
chr20 2332947 2332948
chr20 2537633 2537634

就像是:

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

當平均值不是整數時,您沒有給出任何指示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM