Spoiler: ripgrep kann das nicht allein. Aber du kannst es mit anderen Werkzeugen kombinieren, um das Ziel zu erreichen.

Das Problem

Ich nutze Obsidian mit Frontmatter (YAML), um mein Journal zusammen mit einigen Statistiken zu führen. Manchmal vergesse ich, alle Daten zu erfassen, und möchte die Lücken mit der letzten Messung auffüllen. Sei nachsichtig: Ich weiß, dass das mathematisch nicht korrekt ist, aber für mich ist es gut genug. Wenn meine Notiz automatisch erzeugt wird, wird ein Standardwert verwendet.

Die Lösung

Annahme: Es gibt eine Eigenschaft weight, die standardmäßig auf 0 steht.

ripgrep

Ich habe eine Kombination aus ripgrep und sponge verwendet, um das in fish zu erreichen:

for f in (rg -u -u -l -- 'weight: 0')
  cat $f | rg --passthrough -r 'weight: 1' -- 'weight: 0' | sponge $f
end

Alternative Lösung (ungetestet)

rg -l 'old' | xargs sed -i 's/old/new/g'