Как отсортировать файлы на основе json значения свойства в файле?

В следующей ссылке я нашел интересное решение для проблемы в print:

Это полезно для меня:

lsmod | grep usblp
sudo modprobe usblp
ls -l /dev/usb/lp0
sudo /etc/init.d/ccpd restart

Я надеюсь, что это полезно для чего-то еще.

2
29.08.2014, 14:21
2 ответа

Вам нужно будет использовать некоторый анализатор JSON командной строки , извлечь конкретное значение для каждого файла, распечатав его, и отсортировать по напечатанному значению.

Вот пример скрипта, который вы можете использовать:

ls -1 *.json | tr \\n \\0 | xargs -0 -L1 -I% sh -c "cat '%' | jshon -e view_count | awk '{print \$1\" %\"}'" | sort -k 1 -nr

Где view_count - имя вашего свойства json. Скрипт выведет список файлов .json и для каждого файла распечатает значение свойства JSON view_count и отсортирует его по первому столбцу.

В этом примере вам понадобится инструмент jshon , который можно легко установить из диспетчера пакетов. Или установите его из исходного кода GitHub .

Затем вы можете свободно модифицировать приведенный выше сценарий в соответствии с вашими потребностями. Некоторые примеры:

  • Чтобы напечатать первые 20, добавьте: | head -n20
  • Чтобы напечатать соответствующие видео вместо файлов json, добавьте: | sed s / info.json $ / mkv /

Ссылки:

]
2
27.01.2020, 22:13

Сначала я создаю промежуточный tsv. Такие инструменты, как sortи cut, по умолчанию поддерживают файлы tsv.

Я также предлагаю создать один файл с объектом JSON в каждой строке. jqможет справиться с этим хорошо.

paste <(jq -rc.id < videos.json) <(jq -rc videos.json) | sort -t$'\t' -k1,1 -u | cut -f 2-

Это отсортирует и удалит дубликаты при записи в stdout.

Ссылки:

0
13.03.2020, 11:05

Теги

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