Почему вы должны избегать «строго столбчатых» форматов ввода?

Даг Макилрой, изобретатель труб Unix и один из основателей традиции Unix, сказал об этом в то время [McIlroy78]:

(ii) Ожидайте, что выход каждой программы станет входом в другую, пока неизвестную, программу. Не мешайте выводам с посторонней информацией. Избегайте жестких столбчатых или двоичных форматов ввода. Не настаивайте на интерактивном вводе.

Строгие столбчатые данные звучат хорошо для меня, поэтому я, вероятно, не понимаю, что он имел в виду.

Что это значит и почему это плохо?

    One Solution collect form web for “Почему вы должны избегать «строго столбчатых» форматов ввода?”

    Я предполагаю, что он имел в виду выровненные столбцы, а не столбчатые данные в целом. В любом случае, я бы точно это понял. Например:

    Плохо:

    1 200 3 100 3 400 

    Хорошо:

     1 200 3 100 3 400 

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

    Например, если бы я использовал cut для получения второго поля каждого из приведенных выше примеров, он потерпел бы неудачу с первого раза:

     $ cut -d' ' -f 2 bad $ cut -d' ' -f 2 good 200 3 

    Из-за дополнительных пробелов второе поле bad файла – это пробел. Однако он работает так, как ожидалось, в good файле.

    Interesting Posts

    Как избежать перезагрузки apache при повороте журналов?

    Можно ли сделать VIM подчеркнутым найденным текстом?

    Установите daemon для запуска при загрузке с помощью systemd

    Сценарий оболочки возвращает 126 код выхода из crontab

    Как фильтровать строки с одинаковой датой в разных форматах

    Plain vi (not vim): не удается удалить строку в режиме вставки: требуется ли это поведение POSIX?

    UnitedRPMs для Centos 7

    Какие параметры мне передать grep, чтобы возвращать только имена файлов?

    Как добавить псевдоним в модуль ядра?

    Можно ли сделать здесь-документ в одной строке или эхо-дословно?

    Маршрутизация VPN-соединений через VPN

    Как конвертировать все отдельные файлы в папку в файлы Microsoft Word?

    Запустить программное обеспечение на Linux-машине из Windows: решение для графического интерфейса

    Как я могу загружать 2 (или более) дистрибутивы Linux с gummiboot и UEFI?

    форсирование sudo на удаленном сервере rsync

    Linux и Unix - лучшая ОС в мире.