修改文本文件只有一个数字受约束

Rey*_*x_0 3 text-processing

我有一个文本文件 a.txt,其内容是 0 到 100 之间的数字。我需要一个命令来修改 a.txt,将数字增加 10,但在最终结果必须小于 100(即如果数字达到一个大于 100 的值(例如 95+10=105),它就保持在 100 上)。

我还需要一个最多减少 10 的命令,但最终结果大于或等于 0,它应该是类似的。

我能做的是直接用 echo 修改文件,但这样我就可以用其他东西替换数字(而不是添加到以前的数字)。

Kir*_*ira 5

这将增加 10:

echo "$(awk '{x=$0+10;if(x>100)x=100; print x}' a.txt)" > a.txt
Run Code Online (Sandbox Code Playgroud)

这将减去 10:

echo "$(awk '{x=$0-10;if(x<0)x=0; print x}' a.txt)" > a.txt
Run Code Online (Sandbox Code Playgroud)

$0 是在文件中读取的当前行的值,因此它加/减 10,然后检查它是否在约束范围内。

感谢 Wildcard 的精彩评论,您可以在不使用临时文件的情况下执行此操作。

  • 关于就地编辑文件的一个注意事项:您可以在没有临时文件的情况下执行此操作,如下所示:`echo "$(awk '{...}' a.txt)" &gt; a.txt` 这是使用 `bash 的一种方便方式` 内部(命令替换)而不是搞乱临时文件的创建。归功于 http://serverfault.com/a/547331/313521 (2认同)