linux - 如何在linux中将文件的每一列除以单独文件中的一行?
问题描述
我有一个大的制表符分隔文件,如下所示:
all.raw.data
genes DAR20150803d0 DAR20150803d19 DAR20150803d21 DAR20150804d0 ...
WG_115-M 442 388 230 439
WG_63 415 359 260 409
MG_556 247 220 119 268
...
我还有一个读取计数文件:
readcounts.txt
14
12
13
99
...
我想将第一个数据列除以all.raw.data
第一行readcounts.txt
,依此类推。我的输出应该是这样的:
genes DAR20150803d0 DAR20150803d19 DAR20150803d21 DAR20150804d0
WG_115-M 31.6 32.3 17.7 4.4
WG_63 29.6 29.9 20 4.1
MG_556 17.6 18.3 9.2 2.7
我尝试过使用 awk,但我不知道如何读取readcount.txt
文件的每一行,然后让带有 awk 的列加一。我认为我下面的尝试是最接近的,但仍然行不通。
COUNT=1
while read p; do
COUNT=$(( $COUNT + 1 ))
awk -v c=$p -v d=$COUNT '{ for ((i=d+1;i>=1;i--)) $i /= c; print }' OFS='\t' all.raw.done;
done < readcounts.txt
任何帮助将不胜感激!
解决方案
$ awk 'BEGIN { FS=OFS="\t"; CONVFMT="%.1f" }
NR==FNR { a[NR]=$1; next }
FNR>1 { for (i=2; i<=NF; i++) $i /= a[i-1] }
1' readcounts.txt all.raw.data
genes DAR20150803d0 DAR20150803d19 DAR20150803d21 DAR20150804d0
WG_115-M 31.6 32.3 17.7 4.4
WG_63 29.6 29.9 20 4.1
MG_556 17.6 18.3 9.2 2.7
推荐阅读
- java - 尝试在 macOS Catalina 上安装 Spring Tools App 4.7.0
- android - 在所有页面打开时运行的功能
- python - 使 tkinter 标签以设定的时间间隔刷新
- twitter-bootstrap - 使用 @use 配置 Bootstrap Sass 变量,同时使引导成员在当前模块中可用
- java - 您如何在 UML(类图)中将集合(arrayList、vector 等)编写为属性?
- excel - 有没有办法在 Excel 单元格中获得惰性/缓存评估?
- python - 根据匹配值加入两个 pyspark 数据帧(直到某个小数点)
- aframe - 使用超过 2 个标记预设
- javascript - 用循环比较一个类中的两个数组
- regression - 吸收的固定效应的标准误差 // 使用非整数因子变量运行回归