Closing out the books in ledger(1)
I put this here mostly because I forget how to do it and have to make multiple starts to get it right.
ledger -f ledger.txt print \ -e 2022-1-1 > 2021.txt ledger -f ledger.txt equity -e 2022-1-1 > tempfile.txt echo >> tempfile.txt ledger -f ledger.txt print \ -b 2022-1-1 >> tempfile.txt mv tempfile.txt ledger.txt
Note:
I keep my
ledger
files in
git
so I have a fair bit of freedom to experiment.
If I mess things up beyond repair,
I can always
git reset --hard
to revert to the most recent snapshot.
I recommend you make a backup as well.
The first step pulls all transactions ending
(-e
)
before
2022-1-1
into
2021.txt
as an archive.
Next, create a temporary file
containing the "Opening Balances"
for the period ending
(-e
)
before
2022-1-1
using the
equity
command.
Then
echo
adds a blank line before transactions start
(note the
>>
to
append
to this file rather than overwrite it).
Finally,
print
all the transactions beginning
(-b
)
on
2022-1-1
into our temporary file.
At this point,
we can move the
tempfile.txt
back atop the original transaction log.
If you mark items as
cleared/uncleared
you might want to only close transactions that have cleared, use
--cleared
&
--uncleared
accordingly:
ledger -f ledger.txt print \ --cleared \ -e 2022-1-1 > 2021.txt ledger -f ledger.txt equity --cleared \ -e 2022-1-1 > tempfile.txt echo >> tempfile.txt ledger -f ledger.txt print \ --uncleared \ -b 2022-1-1 >> tempfile.txt mv tempfile.txt ledger.txt