Here's the whole thing, with comments.
My workflow is to import all my ledger entries from my credit card CSV
data into my Queue file, where I tag each entry with an expense report
# (AISERXXXX). This script moves those out to separate files,
regenerates my md5sums for csv2ledger, updates the include list, and
adds any new entries to VC.
-------------------------------------------------------------------------
#!/bin/sh -e
# This script redistributes all AISER entries to seperate files.
echo "Checking for Queue.dat"
[ -f Queue.dat ] || exit -1
echo "Refiling to Reports"
cat Queue.dat \
| grep AISER \
| tr : '\n' \
| tr -d ' ' \
| grep ^AISER \
| sort -u \
| while read X ; do \
cat Queue.dat \
| perl -00 -ne "print if /; ER: $X/" \
>> Reports/$X.dat ; done
# Remove relocated entries & filter out MD5s
echo "Removing refiled entries"
mv Queue.dat oldQueue.dat
cat oldQueue.dat \
| grep -v '^; Relocated sums:' \
| perl -00 -ne "print unless /; ER: AISER[0-9]{4}/" \
> Queue.dat
# Add back MD5's
echo "Renegerating .MD5Sum.cache"
cat Queue.dat Reports/*.dat Data/*.dat \
| grep MD5Sum \
| tr ' ' '\n' \
| egrep '^[0-9a-f]{32}$' \
| xargs -n 25 echo \
> .MD5Sum.cache
# Regen .ledger includes
echo "Regenerating .ledger include list"
mv .ledger .ledger.old
cat .ledger.old \
| grep -v 'include \./' \
> .ledger
find . -type f -name '*.dat' \
| grep -v '\.ledger' \
| grep -v old \
| sort \
| awk '{print "!include " $1 }' \
>> .ledger
# Update BZR
bzr add Reports/AISER*.dat
------------------------------------------------------------------
Russell Adams [email protected]
PGP Key ID: 0x1160DCB3 http://www.adamsinfoserv.com/
Fingerprint: 1723 D8CA 4280 1EC9 557F 66E8 1154 E018 1160 DCB3