document mlr check

This commit is contained in:
John Kerl 2015-05-09 14:40:31 -07:00
parent 0e7edf02c2
commit 86f76b9b80
7 changed files with 43 additions and 14 deletions

View file

@ -174,13 +174,16 @@ lrec_t* lrec_parse_csv(hdr_keeper_t* phdr_keeper, char* data_line, char ifs, int
char* value = data_line;
// xxx needs hdr/data length check!!!!!!
// xxx needs pe-non-null (hdr-empty) check:
sllse_t* pe = phdr_keeper->pkeys->phead;
for (char* p = data_line; *p; ) {
if (*p == ifs) {
*p = 0;
if (pe == NULL) { // xxx to do: get file-name/line-number context in here
fprintf(stderr, "Header-data length mismatch!\n");
exit(1);
}
key = pe->value;
lrec_put_no_free(prec, key, value);
@ -195,8 +198,16 @@ lrec_t* lrec_parse_csv(hdr_keeper_t* phdr_keeper, char* data_line, char ifs, int
p++;
}
}
if (pe == NULL) {
fprintf(stderr, "Header-data length mismatch!\n");
exit(1);
}
key = pe->value;
lrec_put_no_free(prec, key, value);
if (pe->pnext != NULL) {
fprintf(stderr, "Header-data length mismatch!\n");
exit(1);
}
return prec;
}

View file

@ -23,7 +23,7 @@ mapper_t* mapper_check_alloc() {
void mapper_check_usage(char* argv0, char* verb) {
fprintf(stdout, "Usage: %s %s\n", argv0, verb);
fprintf(stdout, "Consumes records without printing any output.\n");
fprintf(stdout, "Useful for doing a well-formatted check on input data.\n");
fprintf(stdout, "Useful for doing a well-formatted check on CSV input data.\n");
}
mapper_t* mapper_check_parse_cli(int* pargi, int argc, char** argv) {

View file

@ -2,9 +2,6 @@
! BUGFIXES !
* --ofmt ignored in put. perhaps best to reglobalize.
* csv hdr/data length check!!
* echo a|mlr --dkvp --oxtab cat puts 'a a'
================================================================
FEATURES

View file

@ -22,7 +22,7 @@ POKI_RUN_COMMAND{{mlr --opprint cat data/het.dkvp}}HERE
POKI_PUT_LINK_FOR_PAGE(reference.html)HERE):
<table><tr><td>
POKI_RUN_COMMAND{{mlr --csv group-like data/het.dkvp}}HERE
POKI_RUN_COMMAND{{mlr --ocsv group-like data/het.dkvp}}HERE
</td><td>
POKI_RUN_COMMAND{{mlr --opprint group-like data/het.dkvp}}HERE
</td></tr></table>

View file

@ -214,6 +214,11 @@ POKI_RUN_COMMAND{{mlr --csv cat a.csv b.csv}}HERE
POKI_RUN_COMMAND{{mlr --icsv --oxtab cat a.csv b.csv}}HERE
</td></tr></table>
<!-- ================================================================ -->
<h2>check</h2>
POKI_RUN_COMMAND{{mlr check --help}}HERE
<!-- ================================================================ -->
<h2>count-distinct</h2>

View file

@ -173,14 +173,15 @@ resource loadsec ok
<p/>
<div class="pokipanel">
<pre>
$ mlr --csv group-like data/het.dkvp
resource=/path/to/file,loadsec=0.45
record_count=100,resource=/path/to/file
record_count=150,resource=/path/to/second/file
$ mlr --ocsv group-like data/het.dkvp
resource,loadsec,ok
/path/to/file,0.45,true
/path/to/second/file,0.32,true
/some/other/path,0.97,false
resource=/path/to/file,loadsec=0.45,ok=true
resource=/path/to/second/file,loadsec=0.32,ok=true
resource=/some/other/path,loadsec=0.97,ok=false
record_count,resource
100,/path/to/file
150,/path/to/second/file
</pre>
</div>
<p/>

View file

@ -99,6 +99,7 @@ Miller commands were run with pretty-print-tabular output format.
&nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="#Number_formatting">Number formatting</a><br/>
&bull;&nbsp;<a href="#Data_transformations">Data transformations</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="#cat">cat</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="#check">check</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="#count-distinct">count-distinct</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="#cut">cut</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&bull;&nbsp;<a href="#filter">filter</a><br/>
@ -468,6 +469,20 @@ c 9
<p/>
</td></tr></table>
<!-- ================================================================ -->
<a id="check"/><h2>check</h2>
<p/>
<div class="pokipanel">
<pre>
$ mlr check --help
Usage: mlr check
Consumes records without printing any output.
Useful for doing a well-formatted check on CSV input data.
</pre>
</div>
<p/>
<!-- ================================================================ -->
<a id="count-distinct"/><h2>count-distinct</h2>
@ -605,7 +620,7 @@ i j k
<pre>
$ mlr filter 'FNR == 2' data/small*
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
pan=pan,1=1,0.3467901443380824=0.3467901443380824,0.7268028627434533=0.7268028627434533
1=pan,2=pan,3=1,4=0.3467901443380824,5=0.7268028627434533
a=wye,b=eks,i=10000,x=0.734806020620654365,y=0.884788571337605134
</pre>
</div>