对制表符分隔文件中的所有“单元格”执行算术运算

时间:2011-05-04 15:08:42

标签: shell

我有一个以m为单位的制表符分隔文件(其中n是行数,m是列数)。

我想对文件中存在的值执行数学运算(比如在每列中添加5,然后将其除以12)。

任何一行正则表达式命令或混合物......帮助

提前谢谢。

3 个答案:

答案 0 :(得分:2)

awk '{
   # add all numbers on a line
   tot=0
   for (i=1;i<=NF;i++) tot+=$i

   # print detail
   print "LineNo=" NR "\ttot="tot "\tavg=" tot/12 "data=" $0 
   gTot+=tot
   }
   END {
         print "Number of Lines =" NR "\n" \
                GrandTotal=\t" gTot
       }
   ' yourFile

你想通过这个excellent awk tutorial来工作,以真正了解正在发生的事情。

我希望这会有所帮助。

P.S。因为你似乎是一个新用户,如果你得到一个帮助你的答案,请记住将其标记为已接受,和/或给它一个+(或 - )作为一个有用的答案。请注意,您只能“接受”一个答案(带有复选标记),每天最多可以投票30个答案。

答案 1 :(得分:1)

尝试sed或awk(awk非常好)他们的目的是为了做到这一点

答案 2 :(得分:1)

使用awk的示例:

gawk '{for (i = 1; i <= NF; i += 1) {printf "%f\t", ($i + 5) / 12;} printf "\n"}'