Команда tput
использует terminfo
(из man tput
):
tput [-Ttype] capname [parms ...]
(…)
Полный список возможностей и
capname
, связанных с каждой из них, см. В terminfo (5).(…)
capname
указывает возможность из базы данных terminfo. Когда поддержка termcap вкомпилирована, также принимается имя termcap для возможности.
civis
и cnorm
описаны на странице руководства terminfo
:
cursor_invisible civis vi make cursor invisi‐
ble
cursor_normal cnorm ve make cursor appear
normal (undo
civis/cvvis)
В общем, если вы не знаете, какой man-страница описывает конкретную команду, вы можете искать ее. В этом случае я обнаружил это, запустив man -K civis
.
Las expresiones regulares y sed
no son una gran combinación para este tipo de tarea, pero es bastante simple usando jq
, una herramienta de procesamiento JSON:
$ jq -r '.list[]|[.dt,.main[]] | @csv' < data.json
1519333200,271.62,271.62,272.921,1028.3,1037.2,1028.3,88,-1.3
1519344000,271.22,271.22,272.193,1028.11,1037.04,1028.11,100,-0.98
jq
toma un flujo de datos JSON y lo filtra para extraer los datos que desea,de manera análoga a sed
pero para datos estructurados en lugar de texto. Este comando toma cada elemento de la matriz "lista"(.list[]
)y extrae el campo "dt"(.dt
)de el objeto dentro de junto con todo en el objeto "principal" también (.main[]
), poniendo todo el lote en una matriz y convirtiéndolo en una fila CSV(@csv
).
Si está interesado en campos particulares, o desea reordenarlos, también puede enumerarlos:
$ jq -r '.list[]|[.dt,.main.temp_min,.main.humidity] | @csv' < data.json
1519333200,271.62,88
1519344000,271.22,100
Simplemente enumere cada uno que le interese e ignore el resto.
Si desea acceder a otras partes de los datos, también puede poner eso allí:.clouds
buscará en el campo clouds
, o puede leer la velocidad del viento con.wind.speed
-siempre un punto antes del nombre, como si estuvieras escribiendo JavaScript. El jq
manual es bastante completo para cualquier comportamiento personalizado que necesite.
Просто быстрое дополнение к отличному ответу Майкла Гомера:
Если выражение jq становится большим, мы можем сделать с ним скрипт:
Пример:
$ cat mkweatherreport
#!/usr/bin/jq -rf
.list[] |
[
.dt,
.main.temp_min, # in Kelvin degrees
.main.humidity
] | @csv
, а затем:
$ mkweatherreport f.json
1519333200,271.62,88
1519344000,271.22,100