将文本文件中的所有值转换为bash中的对数比例

时间:2016-03-03 13:26:06

标签: bash awk

我想将文本文件中的所有值转换为对应的log2值。我有一个巨大的文本文件,有趣的是避免R. 不过,下面的R代码举例说明了我想在bash中以更有效的方式实现的内容。

tab2

我的预期输出:

df <- 'sam1 sam2 sam3
       2000 3000 4000
       2000 1500 1200
       2000 7000 6000'
df <- read.table(text=df, header=T)

dflog <- log(df)

我将非常感谢您在bash中执行任何帮助。

1 个答案:

答案 0 :(得分:3)

awk救援!

$ awk 'NR>1{for(i=1;i<=NF;i++) $i=log($i)}1' sams

sam1 sam2 sam3
7.6009 8.00637 8.29405
7.6009 7.31322 7.09008
7.6009 8.85367 8.69951

这是快速解决方案,对于额外的小数点,您可以使用printf格式化输出,但我不确定是否需要。