[ ] csvrows would output a range of rows (e.g. [2:] would be all rows but the first row)
+
[ ] csv utilities to support integer ranges notation for columns and rows references, E.g. “1,3:4,7,10:” or all
+
+
+
Someday, Maybe
+
+
+
[ ] finddir should have an option to exclude directories (e.g. exclude .git directories from a listing)
+
[ ] textscraper - a tool for select out text and storing it as a JSON field value, sort grep plus sed cleanup and semi-structured text (e.g. webpage)
+
+
+
look at how cut, sed, grep are commonly used in my scripts and merge that functionality into a single tool
+
+
[ ] csvcols, csvrows should have a length option to give you a number of columns or rows respectively
+
[ ] csvcols, csvrows should have a filter option to filter to support filting output conditionally
+
[ ] csvsort should allow a multi-column sort respecting column headings
+
+
+
plus column number would be ascending by that column
+
minos column number would be descending by that column
+
sort would be read from left to right
+
it would be good to include support for column names and not just column numbers to describe the sort
+
+
[ ] jsonmodify takes a JSON document, a dotpath and value then creates/updates the dotpath in the JSON document with the new value
+
+
+
”(delete DOTPATH)” would remove the property described by the dotpath
+
”(update DOTPATH NEW_VALUE)” would replace the property described by the dotpath with a new value (value can be a string, number, or JSON)
+
”(create” DOTPATH NEW_VALUE)” would add a new property at the described dotpath with a new value (value can be a string, number, or JSON)
+
”(join DOTH_PATH SEP)” combines JSON array elements into a string version using separator
+
”(concat DOTPATH1 DOTPATH2… SEP)” combines values into a concatenated string, it takes one or more dotpath values (must be string or number) and return them as a concatenated value (concat .last_name .first_name “, “) would return a last name comma first name string.
+
”(split DOTH_PATH SEP)” turns a string into an array of strings using separator
+
+
[ ] csvcols, csvrows should have a filter mechanism should provide a mechanism to filter by column or row
+
+
+
using a prefix notation (e.g. ‘(and (eq (join (cols (colNo “Last Name”) (colNo “First Name”)) “, “) “Doiel, R. S.”) (gt (cols 4) “2017-06-12”))’)
+
+
[ ] csvfind, csvjoin should have an inverted match operation
+
[ ] a range should accept the word “all” as well as comma delimited list of rows and ranges
+
[ ] Add -uuid and -skip-header-row options constistantly to all csv tools
+
+
+
[ ] csvcols
+
+
[ ] unify the options vocabulary to work the same between each cli
+
+
+
Need a common approach to column ranges in csvcols, csvfind, csvjoin
+
csv2json, csv2mdtable, csv2xlsx should accept a column and row range option for output
+
+
[ ] csvfind add filter by row number (helpful when combined with csvcols for snapshotting the middle of a table)
+
[ ] csv2json should have an option that will include a row number in JSON blob output
+
[ ] csv2json should have the options to normalize property names in JSON objects
+
+
+
camel case
+
snake case
+
lower case/upper case
+
space to underscores
+
strip punctuation
+
rename keys
+
+
[ ] csvrotate would take a CSV file as import and output columns as rows
+
[ ] smartcat would function like cat but with support for ranges of lines (e.g. show me last 20 lines: smartcat -start=0 -end=“-20” file.txt; cat starting with 10th line: smartcat -start=10 file.txt)
+
+
+
[ ] allow prefix line number with a specific delimiter (E.g. comma would let you cat a CSV file adding row numbers as first column)
+
[ ] show lines with prefix, suffix, containing or regxp
+
[ ] show lines without prefix, suffix, containing or regexp
+
+
+
+
Completed
+
+
+
[x] csvcols -col option should not be a boolean, it should take a range like other csv cli
+
[x] utilities should use starting index of 1 instead of zero as humans refer to column 1 when intending to work on the first column
+
[x] for all cli the -delimiter option should support special characters like \t, \n, \r
+
[x] csvfind would accept CSV input from stdin and output rows with matching column values
+
+
+
E.g. cat file1.csv | csvfind -levenshtein -stop-words="the:a:of" -col=1 "This Red Book of West March"
+
E.g. cat file1.csv | csvfind -inverted -levenstein -stop-words="the:a:of" -col=1 "This Red Book of West March"
+
E.g. cat file1.csv | csvfind -contains -col=1 "Red Book"
+
+
[x] csvjoin should have option for fuzzy match on columns (e.g. comparing titles)
This does the same but the contents of data.csv are piped into
the workbook’s sheet.
-
csv2xlsx v0.0.15
+
csv2xlsx v0.0.16
diff --git a/docs/csv2xlsx.md b/docs/csv2xlsx.md
index 79f05ef..8927177 100644
--- a/docs/csv2xlsx.md
+++ b/docs/csv2xlsx.md
@@ -40,4 +40,4 @@ This does the same but the contents of data.csv are piped into
the workbook's sheet.
-csv2xlsx v0.0.15
+csv2xlsx v0.0.16
diff --git a/docs/csvcols.html b/docs/csvcols.html
index 7c20eee..d2bb69e 100644
--- a/docs/csvcols.html
+++ b/docs/csvcols.html
@@ -76,7 +76,7 @@
EXAMPLES
csvcols -i 10col.csv -col 1,4,6 > 3col.csv
-
csvcols v0.0.15
+
csvcols v0.0.16
diff --git a/docs/csvcols.md b/docs/csvcols.md
index 042ab2d..df32f36 100644
--- a/docs/csvcols.md
+++ b/docs/csvcols.md
@@ -60,4 +60,4 @@ Filter a 10 columns CSV file for columns 1,4,6 from file named "10col.csv"
```
-csvcols v0.0.15
+csvcols v0.0.16
diff --git a/docs/csvfind.html b/docs/csvfind.html
index 9bb3c85..e5551ba 100644
--- a/docs/csvfind.html
+++ b/docs/csvfind.html
@@ -82,7 +82,7 @@
EXAMPLES
csvfind -i books.csv -col=2 -contains "Red Book"
-
csvfind v0.0.15
+
csvfind v0.0.16
diff --git a/docs/csvfind.md b/docs/csvfind.md
index af41f0a..b04a47c 100644
--- a/docs/csvfind.md
+++ b/docs/csvfind.md
@@ -64,4 +64,4 @@ You can also search for phrases in columns.
```
-csvfind v0.0.15
+csvfind v0.0.16
diff --git a/docs/csvjoin.html b/docs/csvjoin.html
index 9e36727..96f54a4 100644
--- a/docs/csvjoin.html
+++ b/docs/csvjoin.html
@@ -72,7 +72,7 @@
diff --git a/docs/csvrows.md b/docs/csvrows.md
index 8bdd11f..9a3eaad 100644
--- a/docs/csvrows.md
+++ b/docs/csvrows.md
@@ -60,4 +60,4 @@ Filter a 10 row CSV file for rows 1,4,6 from file named "10row.csv"
```
-csvrows v0.0.15
+csvrows v0.0.16
diff --git a/docs/finddir.html b/docs/finddir.html
index f076c9b..56b24eb 100644
--- a/docs/finddir.html
+++ b/docs/finddir.html
@@ -59,7 +59,7 @@
EXAMPLE
Find all subdirectories starting with “img”.
-
finddir v0.0.15
+
finddir v0.0.16
diff --git a/docs/finddir.md b/docs/finddir.md
index 6674be1..2dcee77 100644
--- a/docs/finddir.md
+++ b/docs/finddir.md
@@ -39,4 +39,4 @@ finddir finds directory based on matching prefix, suffix or contained text in ba
Find all subdirectories starting with "img".
-finddir v0.0.15
+finddir v0.0.16
diff --git a/docs/findfile.html b/docs/findfile.html
index b06c867..f7cd89b 100644
--- a/docs/findfile.html
+++ b/docs/findfile.html
@@ -59,7 +59,7 @@
EXAMPLE
Search the current directory and subdirectories for Markdown files with extension of “.md”.
-
findfile v0.0.15
+
findfile v0.0.16
diff --git a/docs/findfile.md b/docs/findfile.md
index 8630047..63606e0 100644
--- a/docs/findfile.md
+++ b/docs/findfile.md
@@ -39,4 +39,4 @@ findfile finds files based on matching prefix, suffix or contained text in base
Search the current directory and subdirectories for Markdown files with extension of ".md".
-findfile v0.0.15
+findfile v0.0.16
diff --git a/docs/index.html b/docs/index.html
index 667bc50..c8b620d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -39,6 +39,7 @@
This would put your home bin directory at the beginning of your path.
-
mergepath v0.0.15
+
mergepath v0.0.16
diff --git a/docs/mergepath.md b/docs/mergepath.md
index 490d449..c8e8ded 100644
--- a/docs/mergepath.md
+++ b/docs/mergepath.md
@@ -37,4 +37,4 @@ path and removing the resulting duplicate.
This would put your home bin directory at the beginning of your path.
-mergepath v0.0.15
+mergepath v0.0.16
diff --git a/docs/nav.html b/docs/nav.html
deleted file mode 100644
index a8255e4..0000000
--- a/docs/nav.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
- Caltech Library's Digital Library Development Sandbox
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/range.md b/docs/range.md
index f816ae8..bc39a23 100644
--- a/docs/range.md
+++ b/docs/range.md
@@ -63,4 +63,4 @@ Yields 10 9 8 7 6 5 4 3 2 1
Yields a random integer from 0 to 10
-range v0.0.15
+range v0.0.16
diff --git a/docs/reldate.html b/docs/reldate.html
index 804e3e9..692726a 100644
--- a/docs/reldate.html
+++ b/docs/reldate.html
@@ -123,7 +123,7 @@
EXAMPLES
insensitive and can be the first three letters of the English names or full
English names (e.g. Monday, monday, Mon, mon).
-
reldate v0.0.15
+
reldate v0.0.16
diff --git a/docs/reldate.md b/docs/reldate.md
index 6d592ff..6ea8fd9 100644
--- a/docs/reldate.md
+++ b/docs/reldate.md
@@ -107,4 +107,4 @@ insensitive and can be the first three letters of the English names or full
English names (e.g. Monday, monday, Mon, mon).
-reldate v0.0.15
+reldate v0.0.16
diff --git a/docs/splitstring.html b/docs/splitstring.html
new file mode 100644
index 0000000..a178d22
--- /dev/null
+++ b/docs/splitstring.html
@@ -0,0 +1,92 @@
+
+
+
+ Caltech Library's Digital Library Development Sandbox
+
+
+
+
+
+
+
+
+
+
+
USAGE
+
+
splitstring [OPTIONS] [STRING_TO_SPLIT]
+
+
splitstring splits a string based on a delimiting string provided. The default
+delimiter is a space. You can specify a delimiting string via
+the -d or –delimiter option. %!s(MISSING) will split the string provided
+as a command line argument but can read split string(s) recieved on
+stdin in with the -i or –input option. By default the split
+strings are render as a JSON array but with the option -nl or
+–newline you can render each split string one per line.
+
+
OPTIONS
+
+
-d set the delimiting string value
+ -delimiter set the delimiting string value
+ -example display example(s)
+ -h display help
+ -help display help
+ -i input filename
+ -input input filename
+ -l display license
+ -license display license
+ -newline output as one substring per line rather than JSON
+ -nl output as one substring per line rather than JSON
+ -o output filename
+ -output output filename
+ -v display version
+ -version display version
+
+
+
EXAMPLES
+
+
Splitting a string that is double pipe delimited rendering
+one sub string per line.
+
+
splitstring -nl -d '||' "one||two||three"
+
+
+
This should yield
+
+
one
+ two
+ three
+
+
+
Splitting a string that is double pipe delimited rendering JSON
+
+
splitstring -d '||' "one||two||three"
+
+
+
This should yield
+
+
["one","two","three"]
+
+
+
splitstring v0.0.16
+
+
+
+
+
+
diff --git a/docs/splitstring.md b/docs/splitstring.md
new file mode 100644
index 0000000..f4c21d8
--- /dev/null
+++ b/docs/splitstring.md
@@ -0,0 +1,63 @@
+
+# USAGE
+
+## splitstring [OPTIONS] [STRING_TO_SPLIT]
+
+splitstring splits a string based on a delimiting string provided. The default
+delimiter is a space. You can specify a delimiting string via
+the -d or --delimiter option. %!s(MISSING) will split the string provided
+as a command line argument but can read split string(s) recieved on
+stdin in with the -i or --input option. By default the split
+strings are render as a JSON array but with the option -nl or
+--newline you can render each split string one per line.
+
+## OPTIONS
+
+```
+ -d set the delimiting string value
+ -delimiter set the delimiting string value
+ -example display example(s)
+ -h display help
+ -help display help
+ -i input filename
+ -input input filename
+ -l display license
+ -license display license
+ -newline output as one substring per line rather than JSON
+ -nl output as one substring per line rather than JSON
+ -o output filename
+ -output output filename
+ -v display version
+ -version display version
+```
+
+## EXAMPLES
+
+Splitting a string that is double pipe delimited rendering
+one sub string per line.
+
+```shell
+ splitstring -nl -d '||' "one||two||three"
+```
+
+This should yield
+
+```
+ one
+ two
+ three
+```
+
+Splitting a string that is double pipe delimited rendering JSON
+
+```shell
+ splitstring -d '||' "one||two||three"
+```
+
+This should yield
+
+```json
+ ["one","two","three"]
+```
+
+splitstring v0.0.16
diff --git a/docs/timefmt.html b/docs/timefmt.html
index a6cce4b..671f416 100644
--- a/docs/timefmt.html
+++ b/docs/timefmt.html
@@ -64,7 +64,7 @@