Para texto plano basta con herramientas clásicas como awk, pero para datos dentro de páginas HTML o en Json hay alternativas más cómodas:
- jq: JSON
- scrape: HTML (XPath)
Además de los filtros clásicos más populares como sort y uniq, también disponemos de shuf, que devuelve una permutación aleatoria de las líneas que recibe como entrada.
Patrones
# extraer las URL de un JSON jq '.data.children[] |.data.url' < input.json
Extraer las celdas de una tabla
# -a permite seleccionar sólo uno de los atributos de los elementos encontrados # la expresion Xpath puede contener "|" para elegir varios elementos según diferentes criterios # para quedarse sólo con el texto debería bastar /text() , pero en scrape no funciona... scrape -a id -e '//td[@class="temperature"]' < fichero
# cada - une una nueva linea paste - - sed 'N'
Eliminar etiquetas HTML
sed 's_<[^>]*>__g'
Cambiar de separador
# de : a espacio tr ":" " "
Pasar de hora a época
# actualizar base a la época correspondiente al dia # en el ejemplo, se añaden 16 días extra # el fichero de entrada tiene tres columnas: hora, minuto, dato awk 'BEGIN{base=1465596000+(16*24*3600)}{print ($1*3600 + $2*60 + base) " " $3}'
Gráfica de dos series de tiempos
gnuplot plot "serie1.txt" using 1:2, "serie2.txt" using 1:2
Más info: