47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# csv-awk
|
|
|
|
Copyright (C) 2025 Jonathan Lamothe <jonathan@jlamothe.net>
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as
|
|
published by the Free Software Foundation, either version 3 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public
|
|
License along with this program. If not, see
|
|
<https://www.gnu.org/licenses/>.
|
|
|
|
## Executive Summary
|
|
|
|
These are quick and dirty Python scripts I threw together to
|
|
facilitate manipulating CSV files with AWK. They are heavily inspired
|
|
by [csvquote](https://github.com/adamgordonbell/csvquote). I just
|
|
didn't want to have to install go on a machine to use it. I wrote
|
|
this one in Python because that's very likely to already be present on
|
|
most any modern UNIX-ey system.
|
|
|
|
It provides two scripts: `csv-reader.py` and `csv-writer.py` which
|
|
read and write CSV files respectively (converting to and from a
|
|
simpler format). Both read from standard input and write to standard
|
|
output. The format they convert the CSV to/from works as follows:
|
|
|
|
- Each row is represented as a single line of text.
|
|
- Cells are separated by tab characters.
|
|
- Certain special characters within the cells are substituted for other values as follows:
|
|
- Newlines become `~n`.
|
|
- Carriage returns become `~r`.
|
|
- Tabs become `~t`.
|
|
- Tildes (`~`) become `~!`.
|
|
- All other characters remain unchanged.
|
|
|
|
## Disclaimer
|
|
|
|
I haven't seriously looked at Python in over a decade and I hacked
|
|
this together in like 30 minutes. Don't go looking for the most well
|
|
put-together code you've ever seen. It gets the job done though.
|