toolkit to make CSV into something that texttools can easily operate on
[shellsnippets/shellsnippets.git] / mksh / ssv / 0-README
1 SSV: shell-parseable separated values, or separator-separated values
2
3 Basic idea is to make CSV into something usable:
4 • newline (\x0A) is row separator
5 • field separator (\x1C) is column separator
6 • n̲o̲ quotes or escape characters
7 • carriage return (\x0D) represents embedded newlines in cells
8
9 Cell content is arbitrary binary except \x0A and \x1C (and NUL).
10
11
12 SSV can easily be operated on from within shell, e.g. with:
13
14         while IFS=$'\x1C' read -A line; do
15                 for x in ${!line[*]}; do
16                         print -r -- "$x=${line[x]@Q}"
17                 done
18                 print
19         done
20
21 This sample script reads in SSV line-by-line and outputs
22 each cell on a new line, with their index and quoted content.
23
24
25 Apologies for the C file, but it’s much more efficient to
26 do the conversion f̲r̲o̲m̲ CSV with mmap. It could be done in
27 mksh of course… and I’d probably have cursed about C less
28 had I used it… but now it’s there and works.