Files
csv-awk/README.md

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.