Как парсить скрипт Bash? (платформа MIPS)?

Вы не должны удалять /dev/sdX file, вместо этого вы можете сделать это:

echo "1" > /sys/block/sdX/device/delete

При этом ваш процесс может исчезнуть.

1
20.08.2018, 19:44
2 ответа

Вы можете использовать этот Python, чтобы делать то, что хотите:

$ cat parse.py
#!/bin/python

import json
#from pprint import pprint

with open('content.json') as f:
  data = json.load(f)

for dict in data["k"]:
  if (dict["n"] == "NAME 2"):
    for elem in dict["p"]:
      print(dict["n"] + ' \\ ' + elem["b"] + ' \\ ' + elem["c"] + ' \\ ' + elem["d"])

Пример

$./parse.py
NAME 2 \ Event 1 \ 07:15 \ 09:15
NAME 2 \ Event 2 \ 22:00 \ 23:15
NAME 2 \ Event 3 \ 23:15 \ 02:30
2
27.01.2020, 23:31

Использование парсера JSON командной строки jq...

Может быть более короткое jqвыражение, которое делает это, но это то, что я придумал:

$ jq -r --arg name "NAME 2" '.[][]|select(.n==$name).p[]|[$name,.[]]|join(" \\ ")' content.json
NAME 2 \ Event 1 \ 07:15 \ 09:15
NAME 2 \ Event 2 \ 22:00 \ 23:15
NAME 2 \ Event 3 \ 23:15 \ 02:30

Или, используя немного более избирательный код, , как предложено steeldriver ,

$ jq -r --arg name "NAME 2" '.k[]|select(.n==$name).p[]|[$name,.b,.c,.d]|join(" \\ ")' content.json
NAME 2 \ Event 1 \ 07:15 \ 09:15
NAME 2 \ Event 2 \ 22:00 \ 23:15
NAME 2 \ Event 3 \ 23:15 \ 02:30

name— это переменная jq, значение которой передается в командной строке. Код jqделает пять вещей:

  1. Извлеките массивы kиз интересующих нас данных.
  2. Выберите конкретный массив, который мы хотим вывести (и бит pиз этого ).
  3. Создать массив для вывода (, поскольку имя не является частью данных, его необходимо вставить ).
  4. Выполнять вывод со вставленным определенным разделителем.
0
27.01.2020, 23:31

Теги

Похожие вопросы