<!-- TOC -->

- [General](#general)
    - [R](#r)
        - [Installazione](#installazione)
- [Scraping](#scraping)
    - [scrape](#scrape)
        - [Installazione](#installazione-1)
- [XML](#xml)
    - [xml2json](#xml2json)
        - [Installazione](#installazione-2)
    - [XMLStarlet](#xmlstarlet)
        - [Installazione](#installazione-3)
- [JSON](#json)
    - [jq](#jq)
        - [Installazione](#installazione-4)
- [CSV](#csv)
    - [csvkit](#csvkit)
        - [Installazione](#installazione-5)
    - [Miller](#miller)
        - [Installazione](#installazione-6)
- [HTML](#html)
    - [pup](#pup)
- [YAML](#yaml)
    - [yq](#yq)
- [gestione date e tempo](#gestione-date-e-tempo)
    - [dateutils](#dateutils)

<!-- /TOC -->

# General

## R

### Installazione

`sudo apt-get -y install r-base`

# Scraping

## scrape

> Extract HTML elements using an XPath query or CSS3 selector.

URL: [https://github.com/jeroenjanssens/data-science-at-the-command-line/blob/master/tools/scrape](https://github.com/jeroenjanssens/data-science-at-the-command-line/blob/master/tools/scrape)

### Installazione

È uno script `python` quindi è necessario che sia installato nella propria macchina.

Richiede che sia preinstallato `lxml` (è un modulo python), che su una macchina LINUX si installa con:

    sudo apt-get install libxml2-dev libxslt1-dev python-dev

e poi

    sudo apt-get install python-lxml

E richiede anche il modulo python `cssselect`, che si installa con 

    sudo pip install cssselect

Devo scaricarlo, renderlo eseguibile e inserirlo nel PATH:

```bash
# vado nella cartella home dell'utente
cd ~

# scarico scrape, un tool di scraping
curl -sL "https://github.com/jeroenjanssens/data-science-at-the-command-line/raw/master/tools/scrape" > scrape

# rendo il file eseguibile
chmod +x scrape

# creo nella home dell'utente la cartella bin
mkdir ~/bin

# copio scrape nella cartella creata
cp scrape ~/bin

# modifico il file con le preferenze dell'utente 
# NOTA BENE: nano è un editor di testo a riga di comando. se non installato: sudo apt-get install nano
nano ~/.bashrc

# aggiungo nell'ultima riga la stringa di sotto
export PATH=$PATH:~/bin
# salvo ed esco da nano

# passo all'ambiente le modifiche fatte
~/.bash_profile`
```    

# XML

## xml2json

Converte una fonte `XML` in `JSON`.

URL: [https://github.com/Inist-CNRS/node-xml2json-command](https://github.com/Inist-CNRS/node-xml2json-command)

### Installazione 

È basato su `nodejs` e quindi lo richiede. Se `nodejs` è installato lanciare il comando `npm install xml2json-command`.

Per installare `nodejs` su Linux (testato con Ubuntu 14.04):

    curl -sL https://deb.nodesource.com/setup | sudo bash -

e poi

    sudo apt-get install nodejs

## XMLStarlet

> XMLStarlet is a set of command line utilities (tools) which can be used to transform, query, validate, and edit XML documents and files using simple set of shell commands in similar way it is done for plain text files using UNIX grep, sed, awk, diff, patch, join, etc commands.

URL: [http://xmlstar.sourceforge.net/](http://xmlstar.sourceforge.net/)

### Installazione

Per windows è disponibile come eseguibile su [SourceForge](https://sourceforge.net/projects/xmlstar/files/).

Su Linux (testato con Ubuntu 14.04) si installa con

    sudo apt-get update
    sudo apt-get install xmlstarlet

# JSON

## jq

> jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

URL: [https://stedolan.github.io/jq/](https://stedolan.github.io/jq/)

### Installazione

Per Windows è possibile scaricare l'eseguibile.

Su Linux (testato con Ubunut 14.04) si installa con

    sudo apt-get install jq

# CSV

## csvkit

> csvkit is a suite of command-line tools for converting to and working with CSV, the king of tabular file formats.

URL: [https://csvkit.readthedocs.io](https://csvkit.readthedocs.io)

### Installazione

È basata su Python, quindi lo richiede:

    sudo apt-get install python-dev python-pip python-setuptools build-essential

Si installa con

    sudo pip install csvkit

## Miller

Miller è "come awk, sed, cut, join, e sort" in un'unica applicazione.

URL: [http://johnkerl.org/miller/doc/index.html](http://johnkerl.org/miller/doc/index.html)

### Installazione

La modalità che consiglio è quella di scaricare l'ultimo eseguibile precompilato dalla sezione release del repo github: [https://github.com/johnkerl/miller/releases](https://github.com/johnkerl/miller/releases).

**Nota**: non ho idea se sia compilabile per Windows.

# HTML

## pup

> pup is a command line tool for processing HTML. It reads from stdin, prints to stdout, and allows the user to filter parts of the page using CSS selectors.

URL: [https://github.com/ericchiang/pup](https://github.com/ericchiang/pup)

# YAML

## yq

> Pure Python implementation of a subset of the features of jq for YAML documents.

URL: [https://github.com/kislyuk/yq](https://github.com/kislyuk/yq)

# gestione date e tempo

## dateutils

Una comodissiam suite di utility per gestire date e tempo da riga di comando

URL: [https://github.com/hroptatyr/dateutils](https://github.com/hroptatyr/dateutils)