我有一个文本文件 a.txt,其内容是 0 到 100 之间的数字。我需要一个命令来通过将数字增加 10 来修改 a.txt,但在最终结果必须小于 100 的约束下(即,如果数字达到大于 100 的值(例如 95+10=105),则它只会保持在 100)。
我还需要一个最多减少 10 的命令,但这样最终结果大于或等于 0,它应该是类似的。
我能做的是直接用 echo 修改文件,但这样我就可以用其他东西替换该数字(而不是添加到以前的数字)。
答案1
这将增加 10:
echo "$(awk '{x=$0+10;if(x>100)x=100; print x}' a.txt)" > a.txt
这将减去 10:
echo "$(awk '{x=$0-10;if(x<0)x=0; print x}' a.txt)" > a.txt
$0
是在文件中读取的当前行的值,因此它会加/减 10,然后检查它是否在约束范围内。
感谢通配符的精彩评论,您可以在不使用临时文件的情况下完成此操作。
答案2
read bl <a.txt; echo "$((bl<90?bl+10:100))" >a.txt
...如果只有一行a.txt
计算出小于或等于 100 的数字,则应该可以工作。如果a.txt
在大多数 shell 中为空,将其设置为值 10,它也可以工作。相反的逻辑可以工作:
read bl <a.txt; echo "$((bl<10?0:bl-10))" >a.txt