在多个 TXT 文件中将 100 添加到小数

PJ5*_*547 0 text-processing json jq

我对此感到困惑,所以需要一些帮助。我在一个文件夹中有多个 txt 文件。这些文本文件中有一些内容。现在有一个文本"moveLimit":30,(逗号在小数点后)。那么我如何将100多个文件中的所有小数添加到十进制并保存它们。移动不是30,它是每个文本文件中的随机数。而且都在10-999之间。

样本

{"gameModeName":"Classic moves","moveLimit":106,"numberOfColours":6,"portals":[],"protocolVersion":"0.3","randomConfig":{"mode":"Seed Pool","modeModifier":"Tutorial Only","overrideAbTest":true,"seedPool":[547787]},"randomSeed":1088126,"scoreTargets":[300,400,500],"tileMap":[["000","000","000","000","000","000","000","000","000"],["000","000","000","000","000","000","000","000","000"],["002005","002005","002005","002005","002005","002005","002005","002005","000"],["002","002","002","002","002","002","002","002","000"],["002","002","002","002","002","002","002","002","000"],["002","002","002","002","002","002","002","002","000"],["002","002","002","002","002","002","002","002","000"],["000","000","000","000","000","000","000","000","000"],["000","000","000","000","000","000","000","000","000"]]}
Run Code Online (Sandbox Code Playgroud)

Rom*_*est 5

如果您在一开始就说您的txt文件实际上是 JSON 文件(就像您的示例一样) - 它会改变一切并阻止大多数问题/评论。

使用合适的 JSON 工具,jq因为这是正确的方法:

for f in *.txt; do
    if grep -q '"moveLimit":[0-9]*,' "$f"; then
        jq -c '.moveLimit |= . + 100' "$f" > tmp_f && mv tmp_f "$f"
    fi
done
Run Code Online (Sandbox Code Playgroud)

  • @PJ547 好!如果这解决了您的问题,请考虑[接受答案](https://unix.stackexchange.com/help/someone-answers)。 (2认同)