количество совпадений с шаблоном в массиве zsh

Shell-утилиты, предназначенные для работы с текстом (такие как cat, cut, sort, tail и т.д.), требуют, чтобы их входными данными были текстовые файлы. Текстовый файл, в терминах Unix:

  • состоит только из допустимых символов в локали окружающей среды (LC_CTYPE установка локали), кроме нулевого байта;
  • состоит из последовательности строк, каждая из которых завершается символом новой строки (\n, он же перевод строки).

Из этого второго пункта следует, что любой непустой файл заканчивается символом новой строки.

Что происходит, если входные данные не являются текстовым файлом, зависит от утилиты. Старые системы Unix, как правило, игнорировали текст в строке после нулевого байта, а также игнорировали всю или часть последней неполной строки (текст после последнего символа новой строки). Версии GNU всегда рассматривают нулевой байт как обычный символ и в основном пропускают недопустимые последовательности байтов. Версии GNU всегда обрабатывают весь входной текст, даже если последняя новая строка отсутствует, но они различаются тем, добавляют ли они в свой выходной текст завершающую новую строку. Например, GNU cat всегда пропускает входные данные без изменений, но многие другие, включая cut, всегда печатают новую строку в конце каждой выходной строки, включая последнюю.

Поэтому, когда вы производите эталонный ввод, вам нужно подавить концевую новую строку в последний момент.

echo 03112016 | cut -d'.' -f4 | tr -d '\n' | sha256sum

или просто

echo -n 03112016 | sha256sum
2
18.05.2019, 14:04
0 ответов

Теги

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