【发布时间】:2017-11-28 18:52:30
【问题描述】:
我有一个 .txt 文件,其中包含一列值,例如:
2453882.157576
2453882.157947
2453882.159972
2453882.160354
2453882.160724
我想在代码中的每一行添加一个值,比如说 5。所以输出将是:
2453887.157576
2453887.157947
2453887.159972
2453887.160354
2453887.160724
我对 bash 命令相当陌生,我有点不确定要使用哪些命令。 我认为尝试遍历文件并简单地添加它可能会很有用:
while read i; do
shift=$(($i + $5))
done <filename.txt > shifted_by_5_filename.txt
但这会输出错误“无效的算术运算符”。对如何完成这项任务有什么建议吗?
更新: 根据下面的一些建议,我研究了使用 awk 来尝试添加浮点数(而不是整数加法)。我发现了另一个问题: how to add Integer number and a float number in unix shell script
有一个答案是添加两个浮点数:
echo 1.234 2.345 | awk '{print $1 + $2}'
为了尝试将此扩展到我的问题,我尝试了以下方法:
while read i
do echo $i 5 | awk '{print sprintf("%.9f", ($1+ $2))}'
done < filename.txt > shifted_by_5_filename.txt
sprintf 命令试图产生一个不是科学计数法的输出。但是,与以下建议一样,此尝试不会增加 5,而是增加 2.771413。我对此有点困惑。有什么想法吗?
【问题讨论】: