amarao (amarao_san) wrote,
amarao
amarao_san

shell guru

Как реализовать паттерн матчинг?

Дана простейшая задача: распаковать файл неизвестным образом запакованный и скормить его в file. Можно написать выматывающий душу скрипт с определением типа архива.

А можно написать активный pattern matching:

cat somefile| (bzip2 -dc || gzip2 -dc || cat ) | file -

Обратите внимание на cat - это 'success by default', оно позволит скормить в file наш файл без преобразований, если ни один распаковщик не справился. Желающие могут расширить любым количеством архиваторов, ключевым является "не писать херню, если не понял что внутри" и "читать/писать на stdio".
Tags: shell programming
Subscribe

  • ceph + jq

    Они няшки и волшебство. ceph pg dump -f json|jq '.pg_stats[].acting[]'|sort -hu dumped all in format json 0 1 2 3 7 8 9 11 Подробности:…

  • чудеса апстрима

    Сегодня ночью отсылаю багрепорт, просыпаюсь, проблема решена. Итого: 1.8Гб json, 5Мб памяти на парсинг, константно. Но скорость в 1Мб/с парсинга…

  • JSONStream

    Внезапно, я погорячился. Простейший эксперимент со stacked json показывает, что он нифига не stateless и нифига не константный по памяти. Поток…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments