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'