summaryrefslogtreecommitdiffstats
path: root/content/blog/2015-02-27-a-quick-script-to-import-data-from-my-bank-to-gnucash/index.md
blob: 10ddd40fdb53622ffbb60cd4751e0524355d29b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
+++
title = "A quick script to import data from my bank to GnuCash"
lang = "en"

[taxonomies]
tags = ["software", "programming", "scripts"]

[extra]
author = "harald"
+++

Here's a quick awk script I did to convert the bank statements from my bank to a
format recognizable by [GnuCash]:

```awk
# A simple filter to mould the csv from nordea into
# something that can be swallowed by gnucash.

BEGIN {
    FS = ";";
    RS = "\n";
    OFS = ";";
    ORS = "\n";

    # Regex for matching a date
    DATE = /^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$/;
}

# Only lines starting with a date should be printed
$2 ~ DATE {
    # Strip negative sign from withdraw column
    withdraw = gensub(/\-/, "", "g", $8);
    print $2,$4,$6,withdraw,$10;
}
```

It could probably be shorter. I could drop setting the RS/ORS, but I like to be explicit. In addition to fixing the polarity of the withdrawals column it strips away all the lines that don't contain any transactions. I don't need them, and this saves me from having to do it manually in GnuCash.

Not anything revolutionary, but thought I'd share it anyways.

[GnuCash]: http://www.gnucash.org/