如何将列乘以变量并写出?

如何将列乘以变量并写出?

我想将 .txt 文件中的单个列乘以变量,然后写入另一个 .txt 文件。我在这awk条线上错过了什么?提前感谢任何帮助。

!/bin/bash

FILES=/path/to/files
for f in ${FILES}
do
    echo $f
    wc -l $f
    B=10000000
    TOTALLINES="$(wc -l $f | cut -f1 -d' ')"
    echo "TOTALLINES: ${TOTALLINES}"
    SCALINGFACTOR=$(echo "100000000 / $TOTALLINES" | bc -l)
    echo "scaling_factor:  ${SCALINGFACTOR}"
    awk '{printf($1"\t"$2"\t"$3"\t"$4 * "${SCALINGFACTOR}")}' $f"_prepped.txt" > $f"_normalized.txt"

done

答案1

在内部,awk您无法直接访问 shell 变量,您需要将它们作为选项传递,因此将awk命令更改为:

awk -v SF="$SCALINGFACTOR" '{printf($1"\t"$2"\t"$3"\t"$4*SF)}'

相关内容