NAME
uncsv -- convert to or from a CSV stream
SYNOPSIS
uncsv [-hV] [-d delimiter] [-n repl] [-r repl] [file ...]
csv [-hVsSqQ] [-d delimiter] [-n repl] [-r repl] [file ...]
DESCRIPTION
uncsv is a filter command converting the lines of a CSV file into non-
escaped, non-quoted delimited file (pipe by default). This program will
error out if it encounters a character matching the delimiter, it will
also replace the carriage return and new-line characters found in quoted
values allowing you to use awk to play with your CSVs.
csv is the opposite of this command. It takes an unquoted stream of val-
ues, separated by the delimiter of your choice (default: pipe '|') and
produces a "standard" CSV file.
Both tools avoid end-of-line character politics and will leave these
untouched, if your file comes with both carriage returns and new-line
characters (\r\n a.k.a. CRLF), uncsv will leave them as-is.
The options are as follows:
-d delimiter
Specify the output delimiter for uncsv and the input delimiter
for csv , defaults to the pipe character '|'. uncsv interrupts
if the delimiter is found in the input data.
-n repl
If specified, all the new-line characters (a.k.a. line feed or
\n) will be replaced by this replacement string. uncsv replaces
them by spaces by default which is destructive. csv will do the
opposite and replace this pattern by an actual new line charac-
ter.
-r repl
If specified, all the carriage return characters (a.k.a. \r) will
be replaced by this replacement string. uncsv replaces them by
spaces by default which is destructive. csv will do the opposite
and replace this pattern by an actual carriage return character.
-s Quote all fields with bordering spaces or tabs (heading or trail-
ing). This is only applicable when generating the CSV stream.
-S Quote all fields containing spaces or tabs (heading or trailing).
This is only applicable when generating the CSV stream.
-q Quote all fields with a non-empty value. This is only applicable
when generating the CSV stream.
-Q Quote everything, even empty fields. This is only applicable when
generating the CSV stream.
-V Print version.
-h Print usage.
EXAMPLES
Print the second field of a CSV:
uncsv file.csv | cut -d'|' -f 2
Convert a CSV to un-quoted tab-delimited format:
uncsv -d' ' < file.csv > delimited
Convert a PostgreSQL output to CSV:
psql yourdb
psql> \f\a
psql> \o | csv > /tmp/output.csv
psql> select * from candies;
psql> \o
Print the first line of the third field:
uncsv -n '~LF~' file.csv | cut -d'|' -f 3 | sed 's/~LF~.*//g'
Convert your /etc/passwd to CSV.
csv -d: < /etc/passwd
BUGS
csv has a 64KB limit on line size.
SEE ALSO
awk(1), cut(1)
AUTHORS
uncsv was written by Bertrand Janin <
[email protected]> and is distributed
under an ISC license (BSD, MIT and OSI compatible).