Вы не должны удалять /dev/sdX file
, вместо этого вы можете сделать это:
echo "1" > /sys/block/sdX/device/delete
При этом ваш процесс может исчезнуть.
Вы можете использовать этот 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
Использование парсера 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
делает пять вещей:
k
из интересующих нас данных. p
из этого ).