Tools that work with lines of fields separated by delimiters but do not necessarily support CSV field quoting.
Awk
Awk is a POSIX-standard command line tool and programming language. If you use Linux, macOS, or a BSD, you almost certainly have it installed. See below for Windows.
If you already know how to program, the nawk man page is a great way to learn Awk quickly. What you learn from it will apply to other implementations on different platforms. Read it first if you feel overwhelmed by the sheer size of the GNU Awk manual.
Select the lines common to two sorted files or the lines contained in only one of them. (Manual: man 1 comm on your system, GNU, FreeBSD.)
cut
Select portions of each line in one or more files. (Manual: man 1 cut, GNU, FreeBSD.)
grep
Select the lines that match or do not match a pattern from one or more files. (Manual: man 1 grep, GNU, FreeBSD.)
join
Take two files sorted by a common field and join their lines on the value of that field. Lines with values that do not appear in the other file are discarded. (Manual: man 1 join, GNU, FreeBSD.)
paste
Combine several consecutive lines in a text file into one. (Manual: man 1 paste, GNU, FreeBSD.)
sort
Sort lines by key fields. (Manual: man 1 sort, GNU, FreeBSD.)
uniq
Find or remove repeated lines. (Manual: man 1 uniq, GNU, FreeBSD.)
List *nix system information such as environment variables, files, processes, network connections, users as CSV. Manipulate and pretty-print CSV. Execute CSV rows as commands.
A multitool. Compare, filter, normalize, split, and validate CSV files. Reorder, remove, split, and merge fields. Convert data between fixed-width, multi-line, XML, and DSV format. Generate SQL statements.
csvkit is a suite of command-line tools for converting to and working with CSV: convert, clean, cut, grep, join, sort, stack, format, render, query, analyze, etc.
Search, sample, cut, join, transpose, and sort CSV/TSV files. Rename columns. Replace fields and generate new fiends from existing fields. Plot data as vector or raster histograms and box, line, and scatter plots. Convert CSV to Markdown. Convert XLSX to CSV. Split XLSX sheets.
A Python library with a CLI. Convert between a number of file formats for tabular data: CSV, XLS, XLSX, ODS, and others. Query the data (via SQLite). Combine tables. Generate schemas.
Query and update data structures from the command line. Comparable to jq/yq but supports JSON, TOML, YAML, and XML. Static binaries available for releases.
Create, manipulate, and output a stream of records, or JSON objects. Can retrieve records from an SQL database, MongoDB, Atom feeds, XML, and other sources.
A number of simple utilities (like hxcopy, hxpipe, hxunent, hxselect) for manipulating HTML and XML files from W3C. Written in C, quite old-fashioned, but still relevant and maintained.
Add and remove entires in /etc/hosts. Disable (comment out) and enable (uncomment) entires. Not idempotent. Preserves arbitrary comments above its section of the hosts file. Works with groups of entries called “profiles”.
Add and remove entires in /etc/hosts. Disable (comment out) and enable (uncomment) entires. Check if a hostname exists. Reformat the hosts file. Convert the entries to JSON. Idempotent. Removes arbitrary comments.
Retrieve properties as shell script commands to set the corresponding variables (with --dump exports). Retrieve properties’ values as plain text. Substitute values from an INI file in an Autoconf-style template. Supports plug-ins. Chokes on section names and keys with spaces.
Retrieve properties and sections as shell script commands to set the corresponding variables. Retrieve properties’ values as plain text. Check for existence of properties. List sections. Find values that match a pattern. Read-only.
Retrieve properties and sections as INI fragments or shell script commands to set the corresponding variables. Retrieve properties’ values as plain text. Set properties. Remove properties and sections. Create empty sections. Merge INI files. Changes files in place.
Retrieve properties and sections as batch file commands to set the corresponding variables. Set properties. Remove properties and sections. Changes files in place.
Retrieve properties and sections as INI fragments. Retrieve properties’ values as plain text. Set properties. Check for existence of properties and sections. Remove properties and sections. Outputs the updated INI file.
Query and modify a number of file formats. Not all of the formats are equally well supported by Augeas and for some only a limited subset of all valid files can be parsed.
Query and modify configuration files. Shares Augeas’ limitations when it comes to application-specific configuration files (it uses the same lenses), but has better support for generic formats such as JSON and INI.
Query and watch log files. Has batch and interactive mode. Supported formats include the Common Log Format, CUPS page_log, syslog, strace, and generic timestamped messages. Can perform SQL queries.
Templating for structured text
Listed below are restricted programming language interpreters and templating tools that produce structured text output. They are generally intended to remove repetition in configuration files. They are distinct from unstructed templating tools like the jinja2 CLI program, which should not be added to this table.
Firebird is a FOSS database that can be used from a single file, like SQLite. “isql is a program that allows the user to issue arbitrary SQL commands”.