miller/pkg
John Kerl b515e6f18a Say so in the error message when a CSV/TSV length-mismatch line is blank (#1572)
Trailing blank lines at the end of a CSV/TSV file produce a
header/data length mismatch error which, especially for large files,
gives no clue that the offending line is simply blank. Since #2146
(issue #1535), the skip-trivial-records verb is an opt-in way to have
such lines skipped -- but users hitting the error had no pointer to it.

Now, when the mismatching input line is blank, the CSV and TSV readers
append a hint to the error message:

  mlr: CSV header/data length mismatch 2 != 1 at filename tmp.csv row 4; this input line is blank -- use the skip-trivial-records verb to have blank input lines skipped

Errors for genuinely ragged, non-blank lines are unchanged, as is all
non-error behavior. Also adds a note to the CSV/JSON troubleshooting
docs page about trailing blank lines and skip-trivial-records.

Addresses #1572.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:43:57 -04:00
..
auxents Lint round 5+6: staticcheck and errcheck to zero (#2130) 2026-07-03 11:42:08 -04:00
bifs DSL format function: support 1-based positional placeholders like {1} (#1650) (#2160) 2026-07-06 15:15:33 -04:00
cli Exit 0 when skip-trivial-records is used and CSV/TSV ends with blank lines (#1535) (#2146) 2026-07-06 15:22:51 -04:00
climain Add DSL validate/dry-run: put/filter --explain (#2098 PR5) (#2131) 2026-07-03 18:12:23 -04:00
colorizer Strip dead code from pkg/ (#2121) 2026-07-01 19:32:13 -04:00
dkvpx Strip dead code from pkg/ (#2121) 2026-07-01 19:32:13 -04:00
dsl DSL format function: support 1-based positional placeholders like {1} (#1650) (#2160) 2026-07-06 15:15:33 -04:00
entrypoint Add mlr mcp MCP server + agent playbook, with a --no-shell gate (#2098 PR7) (#2133) 2026-07-03 19:41:49 -04:00
go-csv
input Say so in the error message when a CSV/TSV length-mismatch line is blank (#1572) 2026-07-06 15:43:57 -04:00
lib Add mlr mcp MCP server + agent playbook, with a --no-shell gate (#2098 PR7) (#2133) 2026-07-03 19:41:49 -04:00
mlrval Emit valid JSON numbers for floats like 004.56; document CSV quoting vs. type inference (#2151) 2026-07-05 20:19:32 -04:00
output Add --right-align-numeric for PPRINT and Markdown output (#1503) (#2161) 2026-07-06 15:02:18 -04:00
parsing Add a first-class bytes type to the DSL, with b"..." literals and base64/hex codecs (#2122) 2026-07-03 11:58:44 -04:00
pbnjay-strptime
platform
runtime Lint round 5+6: staticcheck and errcheck to zero (#2130) 2026-07-03 11:42:08 -04:00
scan Strip dead code from pkg/ (#2121) 2026-07-01 19:32:13 -04:00
stream Lint round 5+6: staticcheck and errcheck to zero (#2130) 2026-07-03 11:42:08 -04:00
terminals More AI skill/MCP docs (#2140) 2026-07-04 14:45:29 -04:00
transformers Cross-reference head -n 1 -g from uniq for keep-all-columns dedupe (#1075) (#2158) 2026-07-06 15:26:39 -04:00
types Strip dead code from pkg/ (#2121) 2026-07-01 19:32:13 -04:00
version Post-6.20.2 release: back to 6.20.2-dev 2026-07-04 15:44:14 -04:00
README.md

Please see ../../README-dev.md for an overview; please see each subdirectory for details about it.