All Projects → mslusarz → csv-nix-tools

mslusarz / csv-nix-tools

Licence: BSD-3-Clause license
List system information as CSV, manipulate it, pretty print, or export.

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to csv-nix-tools

Parsrs
CSV, JSON, XML text parsers and generators written in pure POSIX shellscript
Stars: ✭ 56 (+154.55%)
Mutual labels:  unix, csv
Criterion
Microbenchmarking for Modern C++
Stars: ✭ 140 (+536.36%)
Mutual labels:  csv, console-application
daemonize
Template code for writing UNIX-daemons.
Stars: ✭ 33 (+50%)
Mutual labels:  unix
invoices-cli
Generates html and pdf invoices using html template files, CSV databases for products, clients, and transactions
Stars: ✭ 34 (+54.55%)
Mutual labels:  csv
rc-shell
A UNIX shell
Stars: ✭ 19 (-13.64%)
Mutual labels:  unix
cati
Cati Unix Package Manager
Stars: ✭ 19 (-13.64%)
Mutual labels:  unix
MiniExcel
Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet
Stars: ✭ 996 (+4427.27%)
Mutual labels:  csv
Workout
A simple iOS app that accesses Health data to export workout data to CSV for any use.
Stars: ✭ 39 (+77.27%)
Mutual labels:  csv
inspector-metrics
Typescript metrics / monitoring library
Stars: ✭ 19 (-13.64%)
Mutual labels:  csv
fql
Formatted text processing with SQL
Stars: ✭ 20 (-9.09%)
Mutual labels:  csv
stock-market-scraper
Scraps historical stock market data from Yahoo Finance (https://finance.yahoo.com/)
Stars: ✭ 110 (+400%)
Mutual labels:  csv
json-to-multicsv
Split a JSON file with hierarchical data to multiple CSV files
Stars: ✭ 23 (+4.55%)
Mutual labels:  csv
ngx-csv
Angular directive to generate a CSV download in the browser
Stars: ✭ 34 (+54.55%)
Mutual labels:  csv
multirun
A minimalist init process designed for Docker
Stars: ✭ 85 (+286.36%)
Mutual labels:  unix
cpp redis
C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform
Stars: ✭ 506 (+2200%)
Mutual labels:  unix
Dotfiles
Passionately crafted configs for CLI lovers 🐧❤️
Stars: ✭ 70 (+218.18%)
Mutual labels:  unix
libcsv
libcsv is a small, simple and fast CSV library written in pure ANSI C89 that can read and write CSV data. | libcsv是用纯ANSI C89编写的小型、简单、快速的CSV库,支持读写CSV数据.
Stars: ✭ 23 (+4.55%)
Mutual labels:  csv
dotfiles
Config files for my *nix systems
Stars: ✭ 105 (+377.27%)
Mutual labels:  unix
Learning-Notes
some notes on learning C++, Go, UNIX, Database and Distributed System
Stars: ✭ 24 (+9.09%)
Mutual labels:  unix
cetch
c sysfetch
Stars: ✭ 23 (+4.55%)
Mutual labels:  unix

csv-nix-tools

Build Status Coverage Status Coverity Scan Build Status

csv-nix-tools is a collection of tools for gathering and processing system information using CSV as an intermediate format.

Although CSV is in the name of the project and this format is used for information storage, it's not that critical aspect of this project.

What is more important is that it allows safe processing of structured data using *NIX-like philosophy by employing pipes and tools with familiar names (such as grep, sort, etc, see examples). "Safe" processing means that the handling of special characters, like new lines, is effort-less - it just works, without bothering users with hacks like IFS.

This project also solves the problem of combining data from multiple sources into a single stream (see the tables tutorial) and processing it in any way user wants to, including powerful SQL syntax, without leaving the shell.

Status

This project is in beta stage. Everything listed below is functional and works as documented. Currently, it builds and runs on Linux with glibc only, but portability patches are welcomed. Although the project has NIX in the name and many source tools are Unix or even Linux-specific, sane portability patches, even for non-Unix systems, will be accepted.

If you discover any issue in the project or a missing feature, don't hesitate to file an issue. Any feedback is welcomed.

Dependencies

  • cmake >= 3.3
  • glibc-devel
  • pkg-config
  • pandoc (optional, required to generate man pages)
  • bison (optional, required by csv-sql, csv-grep-sql and csv-add-sql)
  • flex (optional, required by csv-sql, csv-grep-sql and csv-add-sql)
  • libmnl-devel (optional, required by csv-netstat)
  • libncursesw-devel (optional, used by csv-show)
  • libprocps-devel (optional, required by csv-ps)
  • libsqlite3-devel (optional, required by csv-sqlite)
  • tmux (optional, needed by some csv-show tests)

On Debian-based distros you can install all dependencies by:

apt install build-essential cmake pkg-config flex bison libsqlite3-dev \
            libprocps-dev libncursesw5-dev libmnl-dev pandoc tmux

On Fedora-based distros you can install all dependencies by:

yum install gcc make glibc-devel cmake pkg-config flex bison sqlite-devel \
            procps-ng-devel ncurses-devel libmnl-devel pandoc tmux

Installation

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install

Available tools

Source:

Filtering/processing:

  • csv-add-concat - adds a new column by concatenation of columns and fixed strings
  • csv-add-exec - pipes data to standard input of an external command and creates a new column from its standard output
  • csv-add-replace - adds a new column by performing a string substitution on another column (similar to sed s/$str/$str/)
  • csv-add-rev - adds a new column by reversing another column characterwise
  • csv-add-rpn - adds a new column from RPN expression
  • csv-add-split - adds two new columns by splitting another one using a delimiter
  • csv-add-sql - adds a new column from SQL expression
  • csv-add-substring - adds a new column by extracting a substring of another column
  • csv-avg - takes an average of numerical column(s)
  • csv-cat - concatenates multiple csv files
  • csv-count - counts the number of columns and/or rows
  • csv-cut - removes columns and reorders them
  • csv-diff - compares 2 or more files
  • csv-grep - filters rows matching a pattern
  • csv-grep-rpn - filters rows using RPN expression
  • csv-grep-sql - filters rows using SQL expression
  • csv-head - outputs the first N rows
  • csv-header - processes data header
  • csv-max - takes a maximum value of numerical or string column(s)
  • csv-merge - merges multiple input streams
  • csv-min - takes a minimum value of numerical or string column(s)
  • csv-peek - peek at the CSV stream and pass it unmodified
  • csv-sort - sorts input by column(s)
  • csv-sql - processes input data using simplified (but very fast) SQL-based syntax
  • csv-sqlite - processes input data using SQLite (requires loading the whole input before processing)
  • csv-sum - takes a sum of numerical or string column(s)
  • csv-tac - concatenates files in reverse
  • csv-tail - outputs the last N rows
  • csv-tree - processes hierarchical data
  • csv-uniq - merges adjacent duplicate rows

Sink:

  • csv-exec - executes an external command for each row
  • csv-plot - generates 2D or 3D graph using gnuplot
  • csv-printf - formats data using printf(3)
  • csv-show - formats data in human-readable form (also available as a "-s/-S" option in all source and processing tools)
  • csv-to-html - converts data to HTML
  • csv-to-json - converts data to JSON
  • csv-to-xml - converts data to XML

Documentation

See the man pages.

Examples

See EXAMPLES

TODO

See TODO

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].