Сортировка файла с помощью команд unix

Это сработало для меня :

  1. загрузить оповещения из вашей электронной почты в каталог Thunderbird;
  2. установить плагин ImportExportTools и экспортировать весь каталог как HTML;
  3. перейти к экспорту каталог и запустите: find * -print0 | xargs -0 -I § bash -c 'ИМЯ = "§"; ДАТА = "{{# время: j F Y | $ {NAME: 0: 8}}}"; grep --text -Eo "ru = ([^ &] +) &" "§" | sed "s, ru =,; $ DATE:, g" | sed "s, & ,, g"; '| sort -ru

Я использовал ; $ DATE: в качестве префикса для каждого URL, потому что значимые функции парсера wikitext и позволяют легко переводить формат «AAAAMMDD», используемый файлами экспорта . Заменить можно чем угодно.

Более продуманная версия может отправить URL-адрес в Zotero или Citoid, чтобы получить правильную цитату, или, возможно, проанализировать исходный HTML-код для извлечения дополнительной информации. Формат HTML для предупреждений до 18 января 2014 г. кажется другим.

Протестировано с GNU findutils 4.5.12, bash 4.3.42.

ЗАДАЧИ: загрузите ссылки «увидеть больше статей» и проанализируйте их тоже. В загруженные дни электронные письма содержат только случайную выборку «лучших» новостей.

-3
03.04.2018, 01:24
1 ответ

Сообщите sort, что ваши поля разделены(-t)запятыми, и используйте первое поле (-k1 )для сортировки, но смотрите только на символы 5 и далее в этом поле. Добавьте опцию сортировки nдля численной сортировки:

sort -t, -k1.5n input

С сортировкой GNU вы можете наблюдать, как это происходит:

$ sort -t, -k1.5n --debug input
sort: using ‘en_US.UTF-8’ sorting rules
sort: key 1 is numeric and spans multiple fields
tmp-106,address4,state,country
    ___
______________________________
tmp-1060,address2,state,country
    ____
_______________________________
tmp-1061,address1,state,country
    ____
_______________________________
tmp-1064,address3,state,country
    ____
_______________________________
1
28.01.2020, 05:19

Теги

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