;regen manuals

This commit is contained in:
Simon Michael 2020-09-01 10:46:14 -07:00
parent c1a985f1c8
commit e44c1cfae8
21 changed files with 826 additions and 785 deletions

View File

@ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion.
m4_define({{_version_}}, {{1.18.99}})m4_dnl m4_define({{_version_}}, {{1.18.99}})m4_dnl
m4_dnl m4_dnl
m4_dnl Date to show in man pages. Updated by make setdate. m4_dnl Date to show in man pages. Updated by make setdate.
m4_define({{_monthyear_}}, {{August 2020}})m4_dnl m4_define({{_monthyear_}}, {{September 2020}})m4_dnl

View File

@ -1,6 +1,6 @@
.\"t .\"t
.TH "hledger_csv" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" .TH "hledger_csv" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals"
@ -9,9 +9,10 @@
CSV - how hledger reads CSV data, and the CSV rules file format CSV - how hledger reads CSV data, and the CSV rules file format
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
hledger can read CSV (Comma Separated Value/Character Separated Value) hledger can read CSV files (Character Separated Value - usually comma,
files as if they were journal files, automatically converting each CSV semicolon, or tab) containing dated records as if they were journal
record into a transaction. files, automatically converting each CSV record into a transaction.
.PP
(To learn about \f[I]writing\f[R] CSV, see CSV output.) (To learn about \f[I]writing\f[R] CSV, see CSV output.)
.PP .PP
We describe each CSV file\[aq]s format with a corresponding \f[I]rules We describe each CSV file\[aq]s format with a corresponding \f[I]rules
@ -592,9 +593,19 @@ Interpolation strips outer whitespace (so a CSV value like
See TIPS below for more about referencing other fields. See TIPS below for more about referencing other fields.
.SS \f[C]separator\f[R] .SS \f[C]separator\f[R]
.PP .PP
You can use the \f[C]separator\f[R] directive to read other kinds of You can use the \f[C]separator\f[R] rule to read other kinds of
character-separated data. character-separated data.
Eg to read SSV (Semicolon Separated Values), use: The argument is any single separator character, or the words
\f[C]tab\f[R] or \f[C]space\f[R] (case insensitive).
Eg, for comma-separated values (CSV):
.IP
.nf
\f[C]
separator ,
\f[R]
.fi
.PP
or for semicolon-separated values (SSV):
.IP .IP
.nf .nf
\f[C] \f[C]
@ -602,11 +613,7 @@ separator ;
\f[R] \f[R]
.fi .fi
.PP .PP
The separator directive accepts exactly one single byte character as a or for tab-separated values (TSV):
separator.
To specify whitespace characters, you may use the special words
\f[C]TAB\f[R] or \f[C]SPACE\f[R].
Eg to read TSV (Tab Separated Values), use:
.IP .IP
.nf .nf
\f[C] \f[C]
@ -614,7 +621,10 @@ separator TAB
\f[R] \f[R]
.fi .fi
.PP .PP
See also: File Extension. If the input file has a \f[C].csv\f[R], \f[C].ssv\f[R] or \f[C].tsv\f[R]
file extension (or a \f[C]csv:\f[R], \f[C]ssv:\f[R], \f[C]tsv:\f[R]
prefix), the appropriate separator will be inferred automatically, and
you won\[aq]t need this rule.
.SS \f[C]if\f[R] block .SS \f[C]if\f[R] block
.IP .IP
.nf .nf
@ -964,14 +974,12 @@ they must be double quotes (not single quotes)
spaces outside the quotes are not allowed spaces outside the quotes are not allowed
.SS File Extension .SS File Extension
.PP .PP
CSV (\[dq]Character Separated Values\[dq]) files should be named with To help hledger identify the format and show the right error messages,
one of these filename extensions: \f[C].csv\f[R], \f[C].ssv\f[R], CSV/SSV/TSV files should normally be named with a \f[C].csv\f[R],
\f[C].tsv\f[R]. \f[C].ssv\f[R] or \f[C].tsv\f[R] filename extension.
Or, the file path should be prefixed with one of \f[C]csv:\f[R], Or, the file path should be prefixed with \f[C]csv:\f[R], \f[C]ssv:\f[R]
\f[C]ssv:\f[R], \f[C]tsv:\f[R]. or \f[C]tsv:\f[R].
This helps hledger identify the format and show the right error Eg:
messages.
For example:
.IP .IP
.nf .nf
\f[C] \f[C]
@ -987,7 +995,8 @@ $ cat foo | hledger -f ssv:- foo
\f[R] \f[R]
.fi .fi
.PP .PP
More about this: Input files in the hledger manual. You can override the file extension with a separator rule if needed.
See also: Input files in the hledger manual.
.SS Reading multiple CSV files .SS Reading multiple CSV files
.PP .PP
If you use multiple \f[C]-f\f[R] options to read multiple CSV files at If you use multiple \f[C]-f\f[R] options to read multiple CSV files at

View File

@ -8,10 +8,12 @@ hledger_csv(5) hledger 1.18.99
CSV - how hledger reads CSV data, and the CSV rules file format CSV - how hledger reads CSV data, and the CSV rules file format
hledger can read CSV (Comma Separated Value/Character Separated hledger can read CSV files (Character Separated Value - usually
Value) files as if they were journal files, automatically converting comma, semicolon, or tab) containing dated records as if they were
each CSV record into a transaction. (To learn about _writing_ CSV, see journal files, automatically converting each CSV record into a
CSV output.) transaction.
(To learn about _writing_ CSV, see CSV output.)
We describe each CSV file's format with a corresponding _rules file_. We describe each CSV file's format with a corresponding _rules file_.
By default this is named like the CSV file with a '.rules' extension By default this is named like the CSV file with a '.rules' extension
@ -580,19 +582,24 @@ File: hledger_csv.info, Node: separator, Next: if block, Prev: field assignme
2.4 'separator' 2.4 'separator'
=============== ===============
You can use the 'separator' directive to read other kinds of You can use the 'separator' rule to read other kinds of
character-separated data. Eg to read SSV (Semicolon Separated Values), character-separated data. The argument is any single separator
use: character, or the words 'tab' or 'space' (case insensitive). Eg, for
comma-separated values (CSV):
separator ,
or for semicolon-separated values (SSV):
separator ; separator ;
The separator directive accepts exactly one single byte character as or for tab-separated values (TSV):
a separator. To specify whitespace characters, you may use the special
words 'TAB' or 'SPACE'. Eg to read TSV (Tab Separated Values), use:
separator TAB separator TAB
See also: File Extension. If the input file has a '.csv', '.ssv' or '.tsv' file extension (or a
'csv:', 'ssv:', 'tsv:' prefix), the appropriate separator will be
inferred automatically, and you won't need this rule.
 
File: hledger_csv.info, Node: if block, Next: if table, Prev: separator, Up: CSV RULES File: hledger_csv.info, Node: if block, Next: if table, Prev: separator, Up: CSV RULES
@ -932,11 +939,10 @@ File: hledger_csv.info, Node: File Extension, Next: Reading multiple CSV files
3.3 File Extension 3.3 File Extension
================== ==================
CSV ("Character Separated Values") files should be named with one of To help hledger identify the format and show the right error messages,
these filename extensions: '.csv', '.ssv', '.tsv'. Or, the file path CSV/SSV/TSV files should normally be named with a '.csv', '.ssv' or
should be prefixed with one of 'csv:', 'ssv:', 'tsv:'. This helps '.tsv' filename extension. Or, the file path should be prefixed with
hledger identify the format and show the right error messages. For 'csv:', 'ssv:' or 'tsv:'. Eg:
example:
$ hledger -f foo.ssv print $ hledger -f foo.ssv print
@ -944,7 +950,8 @@ $ hledger -f foo.ssv print
$ cat foo | hledger -f ssv:- foo $ cat foo | hledger -f ssv:- foo
More about this: Input files in the hledger manual. You can override the file extension with a separator rule if needed.
See also: Input files in the hledger manual.
 
File: hledger_csv.info, Node: Reading multiple CSV files, Next: Valid transactions, Prev: File Extension, Up: TIPS File: hledger_csv.info, Node: Reading multiple CSV files, Next: Valid transactions, Prev: File Extension, Up: TIPS
@ -1143,84 +1150,84 @@ command the user specified.
 
Tag Table: Tag Table:
Node: Top72 Node: Top72
Node: EXAMPLES2636 Node: EXAMPLES2677
Ref: #examples2742 Ref: #examples2783
Node: Basic2950 Node: Basic2991
Ref: #basic3050 Ref: #basic3091
Node: Bank of Ireland3592 Node: Bank of Ireland3633
Ref: #bank-of-ireland3727 Ref: #bank-of-ireland3768
Node: Amazon5189 Node: Amazon5230
Ref: #amazon5307 Ref: #amazon5348
Node: Paypal7026 Node: Paypal7067
Ref: #paypal7120 Ref: #paypal7161
Node: CSV RULES14764 Node: CSV RULES14805
Ref: #csv-rules14873 Ref: #csv-rules14914
Node: skip15168 Node: skip15209
Ref: #skip15261 Ref: #skip15302
Node: fields15636 Node: fields15677
Ref: #fields15758 Ref: #fields15799
Node: Transaction field names16923 Node: Transaction field names16964
Ref: #transaction-field-names17083 Ref: #transaction-field-names17124
Node: Posting field names17194 Node: Posting field names17235
Ref: #posting-field-names17346 Ref: #posting-field-names17387
Node: account17416 Node: account17457
Ref: #account17532 Ref: #account17573
Node: amount18069 Node: amount18110
Ref: #amount18200 Ref: #amount18241
Node: currency19307 Node: currency19348
Ref: #currency19442 Ref: #currency19483
Node: balance19648 Node: balance19689
Ref: #balance19782 Ref: #balance19823
Node: comment20099 Node: comment20140
Ref: #comment20216 Ref: #comment20257
Node: field assignment20379 Node: field assignment20420
Ref: #field-assignment20522 Ref: #field-assignment20563
Node: separator21340 Node: separator21381
Ref: #separator21475 Ref: #separator21516
Node: if block21886 Node: if block22056
Ref: #if-block22011 Ref: #if-block22181
Node: Matching the whole record22412 Node: Matching the whole record22582
Ref: #matching-the-whole-record22587 Ref: #matching-the-whole-record22757
Node: Matching individual fields23391 Node: Matching individual fields23561
Ref: #matching-individual-fields23595 Ref: #matching-individual-fields23765
Node: Combining matchers23819 Node: Combining matchers23989
Ref: #combining-matchers24015 Ref: #combining-matchers24185
Node: Rules applied on successful match24328 Node: Rules applied on successful match24498
Ref: #rules-applied-on-successful-match24519 Ref: #rules-applied-on-successful-match24689
Node: if table25173 Node: if table25343
Ref: #if-table25292 Ref: #if-table25462
Node: end27030 Node: end27200
Ref: #end27142 Ref: #end27312
Node: date-format27366 Node: date-format27536
Ref: #date-format27498 Ref: #date-format27668
Node: newest-first28247 Node: newest-first28417
Ref: #newest-first28385 Ref: #newest-first28555
Node: include29068 Node: include29238
Ref: #include29199 Ref: #include29369
Node: balance-type29643 Node: balance-type29813
Ref: #balance-type29763 Ref: #balance-type29933
Node: TIPS30463 Node: TIPS30633
Ref: #tips30545 Ref: #tips30715
Node: Rapid feedback30801 Node: Rapid feedback30971
Ref: #rapid-feedback30918 Ref: #rapid-feedback31088
Node: Valid CSV31378 Node: Valid CSV31548
Ref: #valid-csv31508 Ref: #valid-csv31678
Node: File Extension31700 Node: File Extension31870
Ref: #file-extension31852 Ref: #file-extension32022
Node: Reading multiple CSV files32262 Node: Reading multiple CSV files32451
Ref: #reading-multiple-csv-files32447 Ref: #reading-multiple-csv-files32636
Node: Valid transactions32688 Node: Valid transactions32877
Ref: #valid-transactions32866 Ref: #valid-transactions33055
Node: Deduplicating importing33494 Node: Deduplicating importing33683
Ref: #deduplicating-importing33673 Ref: #deduplicating-importing33862
Node: Setting amounts34706 Node: Setting amounts34895
Ref: #setting-amounts34875 Ref: #setting-amounts35064
Node: Setting currency/commodity35862 Node: Setting currency/commodity36051
Ref: #setting-currencycommodity36054 Ref: #setting-currencycommodity36243
Node: Referencing other fields36857 Node: Referencing other fields37046
Ref: #referencing-other-fields37057 Ref: #referencing-other-fields37246
Node: How CSV rules are evaluated37954 Node: How CSV rules are evaluated38143
Ref: #how-csv-rules-are-evaluated38127 Ref: #how-csv-rules-are-evaluated38316
 
End Tag Table End Tag Table

View File

@ -7,19 +7,20 @@ NAME
CSV - how hledger reads CSV data, and the CSV rules file format CSV - how hledger reads CSV data, and the CSV rules file format
DESCRIPTION DESCRIPTION
hledger can read CSV (Comma Separated Value/Character Separated Value) hledger can read CSV files (Character Separated Value - usually comma,
files as if they were journal files, automatically converting each CSV semicolon, or tab) containing dated records as if they were journal
record into a transaction. (To learn about writing CSV, see CSV out- files, automatically converting each CSV record into a transaction.
put.)
(To learn about writing CSV, see CSV output.)
We describe each CSV file's format with a corresponding rules file. By We describe each CSV file's format with a corresponding rules file. By
default this is named like the CSV file with a .rules extension added. default this is named like the CSV file with a .rules extension added.
Eg when reading FILE.csv, hledger also looks for FILE.csv.rules in the Eg when reading FILE.csv, hledger also looks for FILE.csv.rules in the
same directory as FILE.csv. You can specify a different rules file same directory as FILE.csv. You can specify a different rules file
with the --rules-file option. If a rules file is not found, hledger with the --rules-file option. If a rules file is not found, hledger
will create a sample rules file, which you'll need to adjust. will create a sample rules file, which you'll need to adjust.
This file contains rules describing the CSV data (header line, fields This file contains rules describing the CSV data (header line, fields
layout, date format etc.), and how to construct hledger journal entries layout, date format etc.), and how to construct hledger journal entries
(transactions) from it. Often there will also be a list of conditional (transactions) from it. Often there will also be a list of conditional
rules for categorising transactions based on their descriptions. rules for categorising transactions based on their descriptions.
@ -28,36 +29,36 @@ DESCRIPTION
skip skip one or more header lines or matched skip skip one or more header lines or matched
CSV records CSV records
fields name CSV fields, assign them to hledger fields name CSV fields, assign them to hledger
fields fields
field assignment assign a value to one hledger field, field assignment assign a value to one hledger field,
with interpolation with interpolation
separator a custom field separator separator a custom field separator
if block apply some rules to CSV records matched if block apply some rules to CSV records matched
by patterns by patterns
if table apply some rules to CSV records matched if table apply some rules to CSV records matched
by patterns, alternate syntax by patterns, alternate syntax
end skip the remaining CSV records end skip the remaining CSV records
date-format describe the format of CSV dates date-format describe the format of CSV dates
newest-first disambiguate record order when there's newest-first disambiguate record order when there's
only one date only one date
include inline another CSV rules file include inline another CSV rules file
balance-type choose which type of balance assignments balance-type choose which type of balance assignments
to use to use
Note, for best error messages when reading CSV files, use a .csv, .tsv Note, for best error messages when reading CSV files, use a .csv, .tsv
or .ssv file extension or file prefix - see File Extension below. or .ssv file extension or file prefix - see File Extension below.
There's an introductory Convert CSV files tutorial on hledger.org. There's an introductory Convert CSV files tutorial on hledger.org.
EXAMPLES EXAMPLES
Here are some sample hledger CSV rules files. See also the full col- Here are some sample hledger CSV rules files. See also the full col-
lection at: lection at:
https://github.com/simonmichael/hledger/tree/master/examples/csv https://github.com/simonmichael/hledger/tree/master/examples/csv
Basic Basic
At minimum, the rules file must identify the date and amount fields, At minimum, the rules file must identify the date and amount fields,
and often it also specifies the date format and how many header lines and often it also specifies the date format and how many header lines
there are. Here's a simple CSV file and a rules file for it: there are. Here's a simple CSV file and a rules file for it:
Date, Description, Id, Amount Date, Description, Id, Amount
@ -76,8 +77,8 @@ EXAMPLES
Default account names are chosen, since we didn't set them. Default account names are chosen, since we didn't set them.
Bank of Ireland Bank of Ireland
Here's a CSV with two amount fields (Debit and Credit), and a balance Here's a CSV with two amount fields (Debit and Credit), and a balance
field, which we can use to add balance assertions, which is not neces- field, which we can use to add balance assertions, which is not neces-
sary but provides extra error checking: sary but provides extra error checking:
Date,Details,Debit,Credit,Balance Date,Details,Debit,Credit,Balance
@ -119,13 +120,13 @@ EXAMPLES
assets:bank:boi:checking EUR-5.0 = EUR126.0 assets:bank:boi:checking EUR-5.0 = EUR126.0
expenses:unknown EUR5.0 expenses:unknown EUR5.0
The balance assertions don't raise an error above, because we're read- The balance assertions don't raise an error above, because we're read-
ing directly from CSV, but they will be checked if these entries are ing directly from CSV, but they will be checked if these entries are
imported into a journal file. imported into a journal file.
Amazon Amazon
Here we convert amazon.com order history, and use an if block to gener- Here we convert amazon.com order history, and use an if block to gener-
ate a third posting if there's a fee. (In practice you'd probably get ate a third posting if there's a fee. (In practice you'd probably get
this data from your bank instead, but it's an example.) this data from your bank instead, but it's an example.)
"Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID" "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID"
@ -177,7 +178,7 @@ EXAMPLES
expenses:fees $1.00 expenses:fees $1.00
Paypal Paypal
Here's a real-world rules file for (customised) Paypal CSV, with some Here's a real-world rules file for (customised) Paypal CSV, with some
Paypal-specific rules, and a second rules file included: Paypal-specific rules, and a second rules file included:
"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Item Title","Item ID","Reference Txn ID","Receipt ID","Balance","Note" "Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Item Title","Item ID","Reference Txn ID","Receipt ID","Balance","Note"
@ -332,9 +333,9 @@ CSV RULES
skip skip
skip N skip N
The word "skip" followed by a number (or no number, meaning 1) tells The word "skip" followed by a number (or no number, meaning 1) tells
hledger to ignore this many non-empty lines preceding the CSV data. hledger to ignore this many non-empty lines preceding the CSV data.
(Empty/blank lines are skipped automatically.) You'll need this when- (Empty/blank lines are skipped automatically.) You'll need this when-
ever your CSV data contains header lines. ever your CSV data contains header lines.
It also has a second purpose: it can be used inside if blocks to ignore It also has a second purpose: it can be used inside if blocks to ignore
@ -343,27 +344,27 @@ CSV RULES
fields fields
fields FIELDNAME1, FIELDNAME2, ... fields FIELDNAME1, FIELDNAME2, ...
A fields list (the word "fields" followed by comma-separated field A fields list (the word "fields" followed by comma-separated field
names) is the quick way to assign CSV field values to hledger fields. names) is the quick way to assign CSV field values to hledger fields.
It does two things: It does two things:
1. it names the CSV fields. This is optional, but can be convenient 1. it names the CSV fields. This is optional, but can be convenient
later for interpolating them. later for interpolating them.
2. when you use a standard hledger field name, it assigns the CSV value 2. when you use a standard hledger field name, it assigns the CSV value
to that part of the hledger transaction. to that part of the hledger transaction.
Here's an example that says "use the 1st, 2nd and 4th fields as the Here's an example that says "use the 1st, 2nd and 4th fields as the
transaction's date, description and amount; name the last two fields transaction's date, description and amount; name the last two fields
for later reference; and ignore the others": for later reference; and ignore the others":
fields date, description, , amount, , , somefield, anotherfield fields date, description, , amount, , , somefield, anotherfield
Field names may not contain whitespace. Fields you don't care about Field names may not contain whitespace. Fields you don't care about
can be left unnamed. Currently there must be least two items (there can be left unnamed. Currently there must be least two items (there
must be at least one comma). must be at least one comma).
Note, always use comma in the fields list, even if your CSV uses an- Note, always use comma in the fields list, even if your CSV uses an-
other separator character. other separator character.
Here are the standard hledger field/pseudo-field names. For more about Here are the standard hledger field/pseudo-field names. For more about
@ -376,52 +377,52 @@ CSV RULES
Posting field names Posting field names
account account
accountN, where N is 1 to 99, causes a posting to be generated, with accountN, where N is 1 to 99, causes a posting to be generated, with
that account name. that account name.
Most often there are two postings, so you'll want to set account1 and Most often there are two postings, so you'll want to set account1 and
account2. Typically account1 is associated with the CSV file, and is account2. Typically account1 is associated with the CSV file, and is
set once with a top-level assignment, while account2 is set based on set once with a top-level assignment, while account2 is set based on
each transaction's description, and in conditional blocks. each transaction's description, and in conditional blocks.
If a posting's account name is left unset but its amount is set (see If a posting's account name is left unset but its amount is set (see
below), a default account name will be chosen (like "expenses:unknown" below), a default account name will be chosen (like "expenses:unknown"
or "income:unknown"). or "income:unknown").
amount amount
amountN sets posting N's amount. If the CSV uses separate fields for amountN sets posting N's amount. If the CSV uses separate fields for
inflows and outflows, you can use amountN-in and amountN-out instead. inflows and outflows, you can use amountN-in and amountN-out instead.
By assigning to amount1, amount2, ... etc. you can generate anywhere By assigning to amount1, amount2, ... etc. you can generate anywhere
from 0 to 99 postings. from 0 to 99 postings.
There is also an older, unnumbered form of these names, suitable for There is also an older, unnumbered form of these names, suitable for
2-posting transactions, which sets both posting 1's and (negated) post- 2-posting transactions, which sets both posting 1's and (negated) post-
ing 2's amount: amount, or amount-in and amount-out. This is still ing 2's amount: amount, or amount-in and amount-out. This is still
supported because it keeps pre-hledger-1.17 csv rules files working, supported because it keeps pre-hledger-1.17 csv rules files working,
and because it can be more succinct, and because it converts posting and because it can be more succinct, and because it converts posting
2's amount to cost if there's a transaction price, which can be useful. 2's amount to cost if there's a transaction price, which can be useful.
If you have an existing rules file using the unnumbered form, you might If you have an existing rules file using the unnumbered form, you might
want to use the numbered form in certain conditional blocks, without want to use the numbered form in certain conditional blocks, without
having to update and retest all the old rules. To facilitate this, having to update and retest all the old rules. To facilitate this,
posting 1 ignores amount/amount-in/amount-out if any of posting 1 ignores amount/amount-in/amount-out if any of
amount1/amount1-in/amount1-out are assigned, and posting 2 ignores them amount1/amount1-in/amount1-out are assigned, and posting 2 ignores them
if any of amount2/amount2-in/amount2-out are assigned, avoiding con- if any of amount2/amount2-in/amount2-out are assigned, avoiding con-
flicts. flicts.
currency currency
If the CSV has the currency symbol in a separate field (ie, not part of If the CSV has the currency symbol in a separate field (ie, not part of
the amount field), you can use currencyN to prepend it to posting N's the amount field), you can use currencyN to prepend it to posting N's
amount. Or, currency with no number affects all postings. amount. Or, currency with no number affects all postings.
balance balance
balanceN sets a balance assertion amount (or if the posting amount is balanceN sets a balance assertion amount (or if the posting amount is
left empty, a balance assignment) on posting N. left empty, a balance assignment) on posting N.
Also, for compatibility with hledger <1.17: balance with no number is Also, for compatibility with hledger <1.17: balance with no number is
equivalent to balance1. equivalent to balance1.
You can adjust the type of assertion/assignment with the balance-type You can adjust the type of assertion/assignment with the balance-type
rule (see below). rule (see below).
comment comment
@ -433,11 +434,11 @@ CSV RULES
field assignment field assignment
HLEDGERFIELDNAME FIELDVALUE HLEDGERFIELDNAME FIELDVALUE
Instead of or in addition to a fields list, you can use a "field as- Instead of or in addition to a fields list, you can use a "field as-
signment" rule to set the value of a single hledger field, by writing signment" rule to set the value of a single hledger field, by writing
its name (any of the standard hledger field names above) followed by a its name (any of the standard hledger field names above) followed by a
text value. The value may contain interpolated CSV fields, referenced text value. The value may contain interpolated CSV fields, referenced
by their 1-based position in the CSV record (%N), or by the name they by their 1-based position in the CSV record (%N), or by the name they
were given in the fields list (%CSVFIELDNAME). Some examples: were given in the fields list (%CSVFIELDNAME). Some examples:
# set the amount to the 4th CSV field, with " USD" appended # set the amount to the 4th CSV field, with " USD" appended
@ -446,23 +447,29 @@ CSV RULES
# combine three fields to make a comment, containing note: and date: tags # combine three fields to make a comment, containing note: and date: tags
comment note: %somefield - %anotherfield, date: %1 comment note: %somefield - %anotherfield, date: %1
Interpolation strips outer whitespace (so a CSV value like " 1 " be- Interpolation strips outer whitespace (so a CSV value like " 1 " be-
comes 1 when interpolated) (#1051). See TIPS below for more about ref- comes 1 when interpolated) (#1051). See TIPS below for more about ref-
erencing other fields. erencing other fields.
separator separator
You can use the separator directive to read other kinds of character- You can use the separator rule to read other kinds of character-sepa-
separated data. Eg to read SSV (Semicolon Separated Values), use: rated data. The argument is any single separator character, or the
words tab or space (case insensitive). Eg, for comma-separated values
(CSV):
separator ,
or for semicolon-separated values (SSV):
separator ; separator ;
The separator directive accepts exactly one single byte character as a or for tab-separated values (TSV):
separator. To specify whitespace characters, you may use the special
words TAB or SPACE. Eg to read TSV (Tab Separated Values), use:
separator TAB separator TAB
See also: File Extension. If the input file has a .csv, .ssv or .tsv file extension (or a csv:,
ssv:, tsv: prefix), the appropriate separator will be inferred automat-
ically, and you won't need this rule.
if block if block
if MATCHER if MATCHER
@ -475,8 +482,8 @@ CSV RULES
RULE RULE
RULE RULE
Conditional blocks ("if blocks") are a block of rules that are applied Conditional blocks ("if blocks") are a block of rules that are applied
only to CSV records which match certain patterns. They are often used only to CSV records which match certain patterns. They are often used
for customising account names based on transaction descriptions. for customising account names based on transaction descriptions.
Matching the whole record Matching the whole record
@ -484,16 +491,16 @@ CSV RULES
REGEX REGEX
REGEX is a case-insensitive regular expression which tries to match REGEX is a case-insensitive regular expression which tries to match
anywhere within the CSV record. It is a POSIX ERE (extended regular anywhere within the CSV record. It is a POSIX ERE (extended regular
expression) that also supports GNU word boundaries (\b, \B, \<, \>), expression) that also supports GNU word boundaries (\b, \B, \<, \>),
and nothing else. If you have trouble, be sure to check our and nothing else. If you have trouble, be sure to check our
https://hledger.org/hledger.html#regular-expressions doc. https://hledger.org/hledger.html#regular-expressions doc.
Important note: the record that is matched is not the original record, Important note: the record that is matched is not the original record,
but a synthetic one, with any enclosing double quotes (but not enclos- but a synthetic one, with any enclosing double quotes (but not enclos-
ing whitespace) removed, and always comma-separated (which means that a ing whitespace) removed, and always comma-separated (which means that a
field containing a comma will appear like two fields). Eg, if the field containing a comma will appear like two fields). Eg, if the
original record is 2020-01-01; "Acme, Inc."; 1,000, the REGEX will ac- original record is 2020-01-01; "Acme, Inc."; 1,000, the REGEX will ac-
tually see 2020-01-01,Acme, Inc., 1,000). tually see 2020-01-01,Acme, Inc., 1,000).
@ -502,14 +509,14 @@ CSV RULES
%CSVFIELD REGEX %CSVFIELD REGEX
which matches just the content of a particular CSV field. CSVFIELD is which matches just the content of a particular CSV field. CSVFIELD is
a percent sign followed by the field's name or column number, like a percent sign followed by the field's name or column number, like
%date or %1. %date or %1.
Combining matchers Combining matchers
A single matcher can be written on the same line as the "if"; or multi- A single matcher can be written on the same line as the "if"; or multi-
ple matchers can be written on the following lines, non-indented. Mul- ple matchers can be written on the following lines, non-indented. Mul-
tiple matchers are OR'd (any one of them can match), unless one begins tiple matchers are OR'd (any one of them can match), unless one begins
with an & symbol, in which case it is AND'ed with the previous matcher. with an & symbol, in which case it is AND'ed with the previous matcher.
if if
@ -518,8 +525,8 @@ CSV RULES
RULE RULE
Rules applied on successful match Rules applied on successful match
After the patterns there should be one or more rules to apply, all in- After the patterns there should be one or more rules to apply, all in-
dented by at least one space. Three kinds of rule are allowed in con- dented by at least one space. Three kinds of rule are allowed in con-
ditional blocks: ditional blocks:
o field assignments (to set a hledger field) o field assignments (to set a hledger field)
@ -549,11 +556,11 @@ CSV RULES
MATCHER3,VALUE31,VALUE32,...,VALUE3n MATCHER3,VALUE31,VALUE32,...,VALUE3n
<empty line> <empty line>
Conditional tables ("if tables") are a different syntax to specify Conditional tables ("if tables") are a different syntax to specify
field assignments that will be applied only to CSV records which match field assignments that will be applied only to CSV records which match
certain patterns. certain patterns.
MATCHER could be either field or record matcher, as described above. MATCHER could be either field or record matcher, as described above.
When MATCHER matches, values from that row would be assigned to the CSV When MATCHER matches, values from that row would be assigned to the CSV
fields named on the if line, in the same order. fields named on the if line, in the same order.
@ -577,17 +584,17 @@ CSV RULES
... ...
CSVFIELDNAMEn VALUE3n CSVFIELDNAMEn VALUE3n
Each line starting with MATCHER should contain enough (possibly empty) Each line starting with MATCHER should contain enough (possibly empty)
values for all the listed fields. values for all the listed fields.
Rules would be checked and applied in the order they are listed in the Rules would be checked and applied in the order they are listed in the
table and, like with if blocks, later rules (in the same or another ta- table and, like with if blocks, later rules (in the same or another ta-
ble) or if blocks could override the effect of any rule. ble) or if blocks could override the effect of any rule.
Instead of ',' you can use a variety of other non-alphanumeric charac- Instead of ',' you can use a variety of other non-alphanumeric charac-
ters as a separator. First character after if is taken to be the sepa- ters as a separator. First character after if is taken to be the sepa-
rator for the rest of the table. It is the responsibility of the user rator for the rest of the table. It is the responsibility of the user
to ensure that separator does not occur inside MATCHERs and values - to ensure that separator does not occur inside MATCHERs and values -
there is no way to escape separator. there is no way to escape separator.
Example: Example:
@ -598,7 +605,7 @@ CSV RULES
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out 2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
end end
This rule can be used inside if blocks (only), to make hledger stop This rule can be used inside if blocks (only), to make hledger stop
reading this CSV file and move on to the next input file, or to command reading this CSV file and move on to the next input file, or to command
execution. Eg: execution. Eg:
@ -609,10 +616,10 @@ CSV RULES
date-format date-format
date-format DATEFMT date-format DATEFMT
This is a helper for the date (and date2) fields. If your CSV dates This is a helper for the date (and date2) fields. If your CSV dates
are not formatted like YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll are not formatted like YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll
need to add a date-format rule describing them with a strptime date need to add a date-format rule describing them with a strptime date
parsing pattern, which must parse the CSV date value completely. Some parsing pattern, which must parse the CSV date value completely. Some
examples: examples:
# MM/DD/YY # MM/DD/YY
@ -634,15 +641,15 @@ CSV RULES
mat.html#v:formatTime mat.html#v:formatTime
newest-first newest-first
hledger always sorts the generated transactions by date. Transactions hledger always sorts the generated transactions by date. Transactions
on the same date should appear in the same order as their CSV records, on the same date should appear in the same order as their CSV records,
as hledger can usually auto-detect whether the CSV's normal order is as hledger can usually auto-detect whether the CSV's normal order is
oldest first or newest first. But if all of the following are true: oldest first or newest first. But if all of the following are true:
o the CSV might sometimes contain just one day of data (all records o the CSV might sometimes contain just one day of data (all records
having the same date) having the same date)
o the CSV records are normally in reverse chronological order (newest o the CSV records are normally in reverse chronological order (newest
at the top) at the top)
o and you care about preserving the order of same-day transactions o and you care about preserving the order of same-day transactions
@ -655,9 +662,9 @@ CSV RULES
include include
include RULESFILE include RULESFILE
This includes the contents of another CSV rules file at this point. This includes the contents of another CSV rules file at this point.
RULESFILE is an absolute file path or a path relative to the current RULESFILE is an absolute file path or a path relative to the current
file's directory. This can be useful for sharing common rules between file's directory. This can be useful for sharing common rules between
several rules files, eg: several rules files, eg:
# someaccount.csv.rules # someaccount.csv.rules
@ -672,10 +679,10 @@ CSV RULES
balance-type balance-type
Balance assertions generated by assigning to balanceN are of the simple Balance assertions generated by assigning to balanceN are of the simple
= type by default, which is a single-commodity, subaccount-excluding = type by default, which is a single-commodity, subaccount-excluding
assertion. You may find the subaccount-including variants more useful, assertion. You may find the subaccount-including variants more useful,
eg if you have created some virtual subaccounts of checking to help eg if you have created some virtual subaccounts of checking to help
with budgeting. You can select a different type of assertion with the with budgeting. You can select a different type of assertion with the
balance-type rule: balance-type rule:
# balance assertions will consider all commodities and all subaccounts # balance assertions will consider all commodities and all subaccounts
@ -690,19 +697,19 @@ CSV RULES
TIPS TIPS
Rapid feedback Rapid feedback
It's a good idea to get rapid feedback while creating/troubleshooting It's a good idea to get rapid feedback while creating/troubleshooting
CSV rules. Here's a good way, using entr from http://eradman.com/entr- CSV rules. Here's a good way, using entr from http://eradman.com/entr-
project : project :
$ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC' $ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC'
A desc: query (eg) is used to select just one, or a few, transactions A desc: query (eg) is used to select just one, or a few, transactions
of interest. "bash -c" is used to run multiple commands, so we can of interest. "bash -c" is used to run multiple commands, so we can
echo a separator each time the command re-runs, making it easier to echo a separator each time the command re-runs, making it easier to
read the output. read the output.
Valid CSV Valid CSV
hledger accepts CSV conforming to RFC 4180. When CSV values are en- hledger accepts CSV conforming to RFC 4180. When CSV values are en-
closed in quotes, note: closed in quotes, note:
o they must be double quotes (not single quotes) o they must be double quotes (not single quotes)
@ -710,10 +717,10 @@ TIPS
o spaces outside the quotes are not allowed o spaces outside the quotes are not allowed
File Extension File Extension
CSV ("Character Separated Values") files should be named with one of To help hledger identify the format and show the right error messages,
these filename extensions: .csv, .ssv, .tsv. Or, the file path should CSV/SSV/TSV files should normally be named with a .csv, .ssv or .tsv
be prefixed with one of csv:, ssv:, tsv:. This helps hledger identify filename extension. Or, the file path should be prefixed with csv:,
the format and show the right error messages. For example: ssv: or tsv:. Eg:
$ hledger -f foo.ssv print $ hledger -f foo.ssv print
@ -721,7 +728,8 @@ TIPS
$ cat foo | hledger -f ssv:- foo $ cat foo | hledger -f ssv:- foo
More about this: Input files in the hledger manual. You can override the file extension with a separator rule if needed.
See also: Input files in the hledger manual.
Reading multiple CSV files Reading multiple CSV files
If you use multiple -f options to read multiple CSV files at once, If you use multiple -f options to read multiple CSV files at once,
@ -914,4 +922,4 @@ SEE ALSO
hledger 1.18.99 August 2020 hledger_csv(5) hledger 1.18.99 September 2020 hledger_csv(5)

View File

@ -1,6 +1,6 @@
.\"t .\"t
.TH "hledger_journal" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" .TH "hledger_journal" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals"

View File

@ -1526,4 +1526,4 @@ SEE ALSO
hledger 1.18.99 August 2020 hledger_journal(5) hledger 1.18.99 September 2020 hledger_journal(5)

View File

@ -1,5 +1,5 @@
.TH "hledger_timeclock" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" .TH "hledger_timeclock" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals"

View File

@ -78,4 +78,4 @@ SEE ALSO
hledger 1.18.99 August 2020 hledger_timeclock(5) hledger 1.18.99 September 2020 hledger_timeclock(5)

View File

@ -1,5 +1,5 @@
.TH "hledger_timedot" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" .TH "hledger_timedot" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals"

View File

@ -161,4 +161,4 @@ SEE ALSO
hledger 1.18.99 August 2020 hledger_timedot(5) hledger 1.18.99 September 2020 hledger_timedot(5)

View File

@ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion.
m4_define({{_version_}}, {{1.18.99}})m4_dnl m4_define({{_version_}}, {{1.18.99}})m4_dnl
m4_dnl m4_dnl
m4_dnl Date to show in man pages. Updated by make setdate. m4_dnl Date to show in man pages. Updated by make setdate.
m4_define({{_monthyear_}}, {{August 2020}})m4_dnl m4_define({{_monthyear_}}, {{September 2020}})m4_dnl

View File

@ -1,5 +1,5 @@
.TH "hledger-ui" "1" "August 2020" "hledger-ui 1.18.99" "hledger User Manuals" .TH "hledger-ui" "1" "September 2020" "hledger-ui 1.18.99" "hledger User Manuals"

View File

@ -456,4 +456,4 @@ SEE ALSO
hledger-ui 1.18.99 August 2020 hledger-ui(1) hledger-ui 1.18.99 September 2020 hledger-ui(1)

View File

@ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion.
m4_define({{_version_}}, {{1.18.99}})m4_dnl m4_define({{_version_}}, {{1.18.99}})m4_dnl
m4_dnl m4_dnl
m4_dnl Date to show in man pages. Updated by make setdate. m4_dnl Date to show in man pages. Updated by make setdate.
m4_define({{_monthyear_}}, {{August 2020}})m4_dnl m4_define({{_monthyear_}}, {{September 2020}})m4_dnl

View File

@ -1,5 +1,5 @@
.TH "hledger-web" "1" "August 2020" "hledger-web 1.18.99" "hledger User Manuals" .TH "hledger-web" "1" "September 2020" "hledger-web 1.18.99" "hledger User Manuals"

View File

@ -545,4 +545,4 @@ SEE ALSO
hledger-web 1.18.99 August 2020 hledger-web(1) hledger-web 1.18.99 September 2020 hledger-web(1)

View File

@ -47,8 +47,7 @@ $ hledger balance
By default, accounts are displayed hierarchically, with subaccounts By default, accounts are displayed hierarchically, with subaccounts
indented below their parent. At each level of the tree, accounts are indented below their parent. At each level of the tree, accounts are
sorted by account code if any, then by account name. Or with sorted by account code if any, then by account name. Or with
-S/--sort-amount, by their balance amount, largest first. (Note: -S has -S/--sort-amount, by their balance amount, largest first.
a problem in hledger 1.11-1.18).
"Boring" accounts, which contain a single interesting subaccount and no "Boring" accounts, which contain a single interesting subaccount and no
balance of their own, are elided into the following line for more balance of their own, are elided into the following line for more

View File

@ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion.
m4_define({{_version_}}, {{1.18.99}})m4_dnl m4_define({{_version_}}, {{1.18.99}})m4_dnl
m4_dnl m4_dnl
m4_dnl Date to show in man pages. Updated by make setdate. m4_dnl Date to show in man pages. Updated by make setdate.
m4_define({{_monthyear_}}, {{August 2020}})m4_dnl m4_define({{_monthyear_}}, {{September 2020}})m4_dnl

View File

@ -1,6 +1,6 @@
.\"t .\"t
.TH "hledger" "1" "August 2020" "hledger 1.18.99" "hledger User Manuals" .TH "hledger" "1" "September 2020" "hledger 1.18.99" "hledger User Manuals"
@ -982,15 +982,12 @@ $ cat some.journal | hledger -f-
\f[R] \f[R]
.fi .fi
.PP .PP
Usually the data file is in hledger\[aq]s journal format, but it can Usually the data file is in hledger\[aq]s journal format, but it can be
also be one of several other formats, listed below. in any of the supported file formats, which currently are:
hledger detects the format automatically based on the file extension, or
if that is not recognised, by trying each built-in \[dq]reader\[dq] in
turn:
.PP .PP
.TS .TS
tab(@); tab(@);
lw(7.6n) lw(31.2n) lw(31.2n). lw(7.8n) lw(39.5n) lw(22.7n).
T{ T{
Reader: Reader:
T}@T{ T}@T{
@ -1002,37 +999,45 @@ _
T{ T{
\f[C]journal\f[R] \f[C]journal\f[R]
T}@T{ T}@T{
hledger\[aq]s journal format, also some Ledger journals hledger journal files and some Ledger journals, for transactions
T}@T{ T}@T{
\f[C].journal\f[R] \f[C].j\f[R] \f[C].hledger\f[R] \f[C].ledger\f[R] \f[C].journal\f[R] \f[C].j\f[R] \f[C].hledger\f[R] \f[C].ledger\f[R]
T} T}
T{ T{
\f[C]timeclock\f[R] \f[C]timeclock\f[R]
T}@T{ T}@T{
timeclock files (precise time logging) timeclock files, for precise time logging
T}@T{ T}@T{
\f[C].timeclock\f[R] \f[C].timeclock\f[R]
T} T}
T{ T{
\f[C]timedot\f[R] \f[C]timedot\f[R]
T}@T{ T}@T{
timedot files (approximate time logging) timedot files, for approximate time logging
T}@T{ T}@T{
\f[C].timedot\f[R] \f[C].timedot\f[R]
T} T}
T{ T{
\f[C]csv\f[R] \f[C]csv\f[R]
T}@T{ T}@T{
comma-separated values (data interchange) comma/semicolon/tab/other-separated values, for data import
T}@T{ T}@T{
\f[C].csv\f[R] \f[C].csv\f[R] \f[C].ssv\f[R] \f[C].tsv\f[R]
T} T}
.TE .TE
.PP .PP
If needed (eg to ensure correct error messages when a file has the hledger detects the format automatically based on the file extensions
\[dq]wrong\[dq] extension), you can force a specific reader/format by shown above.
prepending it to the file path with a colon. If it can\[aq]t recognise the file extension, it assumes
Examples: \f[C]journal\f[R] format.
So for non-journal files, it\[aq]s important to use a recognised file
extension, so as to either read successfully or to show relevant error
messages.
.PP
When you can\[aq]t ensure the right file extension, not to worry: you
can force a specific reader/format by prefixing the file path with the
format and a colon.
Eg to read a .dat file as csv:
.IP .IP
.nf .nf
\f[C] \f[C]
@ -1041,16 +1046,20 @@ $ echo \[aq]i 2009/13/1 08:00:00\[aq] | hledger print -ftimeclock:-
\f[R] \f[R]
.fi .fi
.PP .PP
You can also specify multiple \f[C]-f\f[R] options, to read multiple You can specify multiple \f[C]-f\f[R] options, to read multiple files as
files as one big journal. one big journal.
There are some limitations with this: There are some limitations with this:
.IP \[bu] 2 .IP \[bu] 2
directives in one file will not affect the other files directives in one file will not affect the other files
.IP \[bu] 2 .IP \[bu] 2
balance assertions will not see any account balances from previous files balance assertions will not see any account balances from previous files
.PP .PP
If you need those, either use the include directive, or concatenate the If you need either of those things, you can
files, eg: \f[C]cat a.journal b.journal | hledger -f- CMD\f[R]. .IP \[bu] 2
use a single parent file which includes the others
.IP \[bu] 2
or concatenate the files into one before reading, eg:
\f[C]cat a.journal b.journal | hledger -f- CMD\f[R].
.SS Output destination .SS Output destination
.PP .PP
hledger commands send their output to the terminal by default. hledger commands send their output to the terminal by default.
@ -2676,7 +2685,6 @@ At each level of the tree, accounts are sorted by account code if any,
then by account name. then by account name.
Or with \f[C]-S/--sort-amount\f[R], by their balance amount, largest Or with \f[C]-S/--sort-amount\f[R], by their balance amount, largest
first. first.
(Note: \f[C]-S\f[R] has a problem in hledger 1.11-1.18).
.PP .PP
\[dq]Boring\[dq] accounts, which contain a single interesting subaccount \[dq]Boring\[dq] accounts, which contain a single interesting subaccount
and no balance of their own, are elided into the following line for more and no balance of their own, are elided into the following line for more

View File

@ -955,38 +955,46 @@ $ hledger -f /some/file stats
$ cat some.journal | hledger -f- $ cat some.journal | hledger -f-
Usually the data file is in hledger's journal format, but it can also Usually the data file is in hledger's journal format, but it can be
be one of several other formats, listed below. hledger detects the in any of the supported file formats, which currently are:
format automatically based on the file extension, or if that is not
recognised, by trying each built-in "reader" in turn:
Reader: Reads: Used for file extensions: Reader: Reads: Used for file
--------------------------------------------------------------------------- extensions:
'journal'hledger's journal format, also '.journal' '.j' '.hledger' --------------------------------------------------------------------------
some Ledger journals '.ledger' 'journal'hledger journal files and some Ledger '.journal' '.j'
'timeclock'timeclock files (precise time '.timeclock' journals, for transactions '.hledger' '.ledger'
logging) 'timeclock'timeclock files, for precise time '.timeclock'
'timedot'timedot files (approximate '.timedot' logging
time logging) 'timedot'timedot files, for approximate time '.timedot'
'csv' comma-separated values (data '.csv' logging
interchange) 'csv' comma/semicolon/tab/other-separated '.csv' '.ssv' '.tsv'
values, for data import
If needed (eg to ensure correct error messages when a file has the hledger detects the format automatically based on the file extensions
"wrong" extension), you can force a specific reader/format by prepending shown above. If it can't recognise the file extension, it assumes
it to the file path with a colon. Examples: 'journal' format. So for non-journal files, it's important to use a
recognised file extension, so as to either read successfully or to show
relevant error messages.
When you can't ensure the right file extension, not to worry: you can
force a specific reader/format by prefixing the file path with the
format and a colon. Eg to read a .dat file as csv:
$ hledger -f csv:/some/csv-file.dat stats $ hledger -f csv:/some/csv-file.dat stats
$ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:- $ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:-
You can also specify multiple '-f' options, to read multiple files as You can specify multiple '-f' options, to read multiple files as one
one big journal. There are some limitations with this: big journal. There are some limitations with this:
* directives in one file will not affect the other files * directives in one file will not affect the other files
* balance assertions will not see any account balances from previous * balance assertions will not see any account balances from previous
files files
If you need those, either use the include directive, or concatenate If you need either of those things, you can
the files, eg: 'cat a.journal b.journal | hledger -f- CMD'.
* use a single parent file which includes the others
* or concatenate the files into one before reading, eg: 'cat
a.journal b.journal | hledger -f- CMD'.
 
File: hledger.info, Node: Output destination, Next: Output format, Prev: Input files, Up: OPTIONS File: hledger.info, Node: Output destination, Next: Output format, Prev: Input files, Up: OPTIONS
@ -2205,8 +2213,7 @@ $ hledger balance
By default, accounts are displayed hierarchically, with subaccounts By default, accounts are displayed hierarchically, with subaccounts
indented below their parent. At each level of the tree, accounts are indented below their parent. At each level of the tree, accounts are
sorted by account code if any, then by account name. Or with sorted by account code if any, then by account name. Or with
'-S/--sort-amount', by their balance amount, largest first. (Note: '-S' '-S/--sort-amount', by their balance amount, largest first.
has a problem in hledger 1.11-1.18).
"Boring" accounts, which contain a single interesting subaccount and "Boring" accounts, which contain a single interesting subaccount and
no balance of their own, are elided into the following line for more no balance of their own, are elided into the following line for more
@ -4095,164 +4102,164 @@ Node: Unicode characters28869
Ref: #unicode-characters29051 Ref: #unicode-characters29051
Node: Input files30463 Node: Input files30463
Ref: #input-files30606 Ref: #input-files30606
Node: Output destination32535 Node: Output destination32905
Ref: #output-destination32687 Ref: #output-destination33057
Node: Output format33112 Node: Output format33482
Ref: #output-format33262 Ref: #output-format33632
Node: Regular expressions35429 Node: Regular expressions35799
Ref: #regular-expressions35586 Ref: #regular-expressions35956
Node: Smart dates37322 Node: Smart dates37692
Ref: #smart-dates37473 Ref: #smart-dates37843
Node: Report start & end date38834 Node: Report start & end date39204
Ref: #report-start-end-date39006 Ref: #report-start-end-date39376
Node: Report intervals40503 Node: Report intervals40873
Ref: #report-intervals40668 Ref: #report-intervals41038
Node: Period expressions41058 Node: Period expressions41428
Ref: #period-expressions41218 Ref: #period-expressions41588
Node: Depth limiting45550 Node: Depth limiting45920
Ref: #depth-limiting45694 Ref: #depth-limiting46064
Node: Pivoting46026 Node: Pivoting46396
Ref: #pivoting46149 Ref: #pivoting46519
Node: Valuation47825 Node: Valuation48195
Ref: #valuation47927 Ref: #valuation48297
Node: -B Cost48616 Node: -B Cost48986
Ref: #b-cost48720 Ref: #b-cost49090
Node: -V Value48853 Node: -V Value49223
Ref: #v-value48999 Ref: #v-value49369
Node: -X Value in specified commodity49194 Node: -X Value in specified commodity49564
Ref: #x-value-in-specified-commodity49393 Ref: #x-value-in-specified-commodity49763
Node: Valuation date49542 Node: Valuation date49912
Ref: #valuation-date49710 Ref: #valuation-date50080
Node: Market prices50120 Node: Market prices50490
Ref: #market-prices50300 Ref: #market-prices50670
Node: --infer-value market prices from transactions51077 Node: --infer-value market prices from transactions51447
Ref: #infer-value-market-prices-from-transactions51326 Ref: #infer-value-market-prices-from-transactions51696
Node: Valuation commodity52608 Node: Valuation commodity52978
Ref: #valuation-commodity52817 Ref: #valuation-commodity53187
Node: Simple valuation examples54043 Node: Simple valuation examples54413
Ref: #simple-valuation-examples54245 Ref: #simple-valuation-examples54615
Node: --value Flexible valuation54904 Node: --value Flexible valuation55274
Ref: #value-flexible-valuation55112 Ref: #value-flexible-valuation55482
Node: More valuation examples57059 Node: More valuation examples57429
Ref: #more-valuation-examples57268 Ref: #more-valuation-examples57638
Node: Effect of valuation on reports59273 Node: Effect of valuation on reports59643
Ref: #effect-of-valuation-on-reports59461 Ref: #effect-of-valuation-on-reports59831
Node: COMMANDS64982 Node: COMMANDS65352
Ref: #commands65090 Ref: #commands65460
Node: accounts66198 Node: accounts66568
Ref: #accounts66296 Ref: #accounts66666
Node: activity66995 Node: activity67365
Ref: #activity67105 Ref: #activity67475
Node: add67488 Node: add67858
Ref: #add67589 Ref: #add67959
Node: aregister70382 Node: aregister70752
Ref: #aregister70494 Ref: #aregister70864
Node: aregister and custom posting dates71867 Node: aregister and custom posting dates72237
Ref: #aregister-and-custom-posting-dates72040 Ref: #aregister-and-custom-posting-dates72410
Ref: #output-format-172633 Ref: #output-format-173003
Node: balance73038 Node: balance73408
Ref: #balance73155 Ref: #balance73525
Node: Classic balance report74613 Node: Classic balance report74983
Ref: #classic-balance-report74786 Ref: #classic-balance-report75156
Node: Customising the classic balance report76220 Node: Customising the classic balance report76540
Ref: #customising-the-classic-balance-report76448 Ref: #customising-the-classic-balance-report76768
Node: Colour support78524 Node: Colour support78844
Ref: #colour-support78691 Ref: #colour-support79011
Node: Flat mode78787 Node: Flat mode79107
Ref: #flat-mode78935 Ref: #flat-mode79255
Node: Depth limited balance reports79348 Node: Depth limited balance reports79668
Ref: #depth-limited-balance-reports79533 Ref: #depth-limited-balance-reports79853
Node: Percentages79989 Node: Percentages80309
Ref: #percentages80155 Ref: #percentages80475
Node: Multicolumn balance report81292 Node: Multicolumn balance report81612
Ref: #multicolumn-balance-report81472 Ref: #multicolumn-balance-report81792
Node: Budget report87069 Node: Budget report87389
Ref: #budget-report87212 Ref: #budget-report87532
Node: Nested budgets92478 Node: Nested budgets92798
Ref: #nested-budgets92590 Ref: #nested-budgets92910
Ref: #output-format-296071 Ref: #output-format-296391
Node: balancesheet96268 Node: balancesheet96588
Ref: #balancesheet96404 Ref: #balancesheet96724
Node: balancesheetequity97916 Node: balancesheetequity98236
Ref: #balancesheetequity98065 Ref: #balancesheetequity98385
Node: cashflow99141 Node: cashflow99461
Ref: #cashflow99269 Ref: #cashflow99589
Node: check-dates100485 Node: check-dates100805
Ref: #check-dates100612 Ref: #check-dates100932
Node: check-dupes100891 Node: check-dupes101211
Ref: #check-dupes101017 Ref: #check-dupes101337
Node: close101310 Node: close101630
Ref: #close101418 Ref: #close101738
Node: close usage102940 Node: close usage103260
Ref: #close-usage103033 Ref: #close-usage103353
Node: codes105846 Node: codes106166
Ref: #codes105954 Ref: #codes106274
Node: commodities106666 Node: commodities106986
Ref: #commodities106793 Ref: #commodities107113
Node: descriptions106875 Node: descriptions107195
Ref: #descriptions107003 Ref: #descriptions107323
Node: diff107307 Node: diff107627
Ref: #diff107413 Ref: #diff107733
Node: files108460 Node: files108780
Ref: #files108560 Ref: #files108880
Node: help108707 Node: help109027
Ref: #help108807 Ref: #help109127
Node: import109888 Node: import110208
Ref: #import110002 Ref: #import110322
Node: Importing balance assignments110895 Node: Importing balance assignments111215
Ref: #importing-balance-assignments111043 Ref: #importing-balance-assignments111363
Node: incomestatement111692 Node: incomestatement112012
Ref: #incomestatement111825 Ref: #incomestatement112145
Node: notes113170 Node: notes113490
Ref: #notes113283 Ref: #notes113603
Node: payees113651 Node: payees113971
Ref: #payees113757 Ref: #payees114077
Node: prices114177 Node: prices114497
Ref: #prices114283 Ref: #prices114603
Node: print114624 Node: print114944
Ref: #print114734 Ref: #print115054
Node: print-unique119530 Node: print-unique119850
Ref: #print-unique119656 Ref: #print-unique119976
Node: register119941 Node: register120261
Ref: #register120068 Ref: #register120388
Node: Custom register output124517 Node: Custom register output124837
Ref: #custom-register-output124646 Ref: #custom-register-output124966
Node: register-match125983 Node: register-match126303
Ref: #register-match126117 Ref: #register-match126437
Node: rewrite126468 Node: rewrite126788
Ref: #rewrite126583 Ref: #rewrite126903
Node: Re-write rules in a file128438 Node: Re-write rules in a file128758
Ref: #re-write-rules-in-a-file128572 Ref: #re-write-rules-in-a-file128892
Node: Diff output format129782 Node: Diff output format130102
Ref: #diff-output-format129951 Ref: #diff-output-format130271
Node: rewrite vs print --auto131043 Node: rewrite vs print --auto131363
Ref: #rewrite-vs.-print---auto131222 Ref: #rewrite-vs.-print---auto131542
Node: roi131778 Node: roi132098
Ref: #roi131876 Ref: #roi132196
Node: stats132888 Node: stats133208
Ref: #stats132987 Ref: #stats133307
Node: tags133775 Node: tags134095
Ref: #tags133873 Ref: #tags134193
Node: test134392 Node: test134712
Ref: #test134500 Ref: #test134820
Node: Add-on commands135247 Node: Add-on commands135567
Ref: #add-on-commands135364 Ref: #add-on-commands135684
Node: ui136707 Node: ui137027
Ref: #ui136795 Ref: #ui137115
Node: web136849 Node: web137169
Ref: #web136952 Ref: #web137272
Node: iadd137068 Node: iadd137388
Ref: #iadd137179 Ref: #iadd137499
Node: interest137261 Node: interest137581
Ref: #interest137368 Ref: #interest137688
Node: ENVIRONMENT137608 Node: ENVIRONMENT137928
Ref: #environment137720 Ref: #environment138040
Node: FILES138705 Node: FILES139025
Ref: #files-1138808 Ref: #files-1139128
Node: LIMITATIONS139021 Node: LIMITATIONS139341
Ref: #limitations139140 Ref: #limitations139460
Node: TROUBLESHOOTING139882 Node: TROUBLESHOOTING140202
Ref: #troubleshooting139995 Ref: #troubleshooting140315
 
End Tag Table End Tag Table

File diff suppressed because it is too large Load Diff