Files
csv-awk/README.md

47 lines
1.8 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. It is 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. 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 it
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.