NEWFORM(1) NEWFORM(1) НАЗВАНИЕ newform - изменение формата текстового файла СИНТАКСИС |newform [-s] [-iспециф_табул] [-oспециф_табул] [-b[число_символов]] | [-e[число_символов]] [-p[число_символов]] [-a[число_символов]] | [-f] [-cсимвол] [-l[длина]] [файл ...] ОПИСАНИЕ Команда newform читает строки из указанных файлов или, если файлы не заданы, со стандартного ввода, выполняет переформатирование этих строк и помещает результат на стандартный вывод. Переформатирование происходит в со- ответствии с заданными в командной строке опциями. Все опции, кроме -s, могут появляться в командной стро- ке в любом порядке, повторяться, между ними могут вкли- ниваться имена файлов. Обработка опций осуществляется в том порядке, в каком они заданы. Это означает, напри- мер, что результаты форматирования для последователь- ности опций -e15 -l60 отличны от результатов для после- довательности -l60 -e15. Опции применяются ко всем фай- лам, имена которых присутствуют в командной строке. -s Начальные символы каждой строки, вплоть до первого символа табуляции, отсекаются и в количестве, не превышающем 8, помещаются в конец строки. Если от- сечено более 8 символов (не считая табуляции), то 8-й символ заменяется на *, а последующие символы отбрасываются. Первый символ табуляции отбрасыва- ется всегда. Если эта опция применяется к файлу, в котором хотя бы одна строка не содержит символа табуляции, то выдается сообщение об ошибке и происходит выход из программы. Программа хранит отсеченные символы, пока к данной строке не будут применены все опции. После этого хранимые символы присоединяются к кон- цу обработанной строки. Рассмотрим в качестве примера файл f1, каждая строка которого начинается с последовательности цифр, а далее следует один или несколько символов табуляции вперемежку с текстом. Пусть требуется преобразовать его таким образом, чтобы каждая строка начиналась с текста, все символы табуляции кроме первого были заменены пробелами, длина стро- ки была бы сначала доведена до 72 символов (путем отбрасывания лишних символов или дополнения конца строки пробелами), а начиная с 73-й позиции была размещена последовательность цифр, с которой начи нается исходная строка. Это достигается выполнени- ем команды: |newform -s -i -l -a -e f1 -iспециф_табул Спецификация табуляции при вводе: символы табуля- ции заменяются на пробелы в соответствии с задан- ной спецификацией, которая воспринимается в любой из форм, описанных в tabs(1). Кроме того, специф_- табул может быть задана как --, и тогда предпола гается, что собственно спецификация табуляции на- ходится в первой строке, считанной со стандартного ввода [см. fspec(4)]. Если специф_табул не задана, то принимается, что она равна -8 (значение по умолчанию). При специф_табул, равной -0, предпола- гается отсутствие в тексте символов табуляции; в случае их обнаружения они обрабатываются как при специф_табул, равной -1. -oспециф_табул Спецификация табуляции при выводе: пробелы заменя- ются символами табуляции в соответствии с заданной спецификацией, аналогичной по форме -iспециф_та бул. Если специф_табул не задана, то принимается, что она равна -8. При специф_табул, равной -0, пробелы при выводе символами табуляции не заменя- ются. -b[число_символов] Отсечь от начала строки указанное число_символов в случае, если длина строки превышает номинальную (см. -l). По умолчанию (когда число_символов не указано) начальные символы отсекаются в количест ве, необходимом для получения строки номинальной длины. Опцию -b можно использовать, например, для удаления порядковых номеров строк из программы на КОБОЛе (файл f2), что делается следующим образом: |newform -l1 -b7 f2 Использование опции -l1 обусловлено необходимостью установки номинальной длины, меньшей чем длина лю- бой существующей строки, с тем чтобы активировать опцию -b. -e[число_символов] Аналогично -b с тем отличием, что символы отсек ются от конца строки. -p[число_символов] Добавить в начало строк с длиной, меньшей номи- нальной, указанное число одинаковых символов (см. -c). Если число_символов не указано, строки допол- няются до номинальной длины. -a[число_символов] Аналогично -p с тем отличием, что пополняется ко нец строки. -f Поместить строку в формате спецификации табуляции на стандартный вывод до всех других строк. Выводи- мая спецификация задается последней опцией -o. Ес- ли опция -o не была указана ни разу, помещается принимаемая по умолчанию спецификация -8. -cсимвол Заменить символ, которым пополняется начало/конец строки, на указанный символ. По умолчанию в ка- честве заполнителя используется пробел. -l[длина] Установить номинальную длину строки. Если длина опущена, то номинальная длина строки принимается равной 72. Если опция -l не задана вовсе, то номи- нальная длина принимается равной 80. Следует заме тить, что каждый символ табуляции и забоя рассмат- ривается как единичный символ (для замены символов табуляции пробелами необходимо воспользоваться оп- цией -i). СМ. ТАКЖЕ csplit(1), tabs(1). fspec(4) в Справочнике программиста. КОДЫ ЗАВЕРШЕНИЯ 0 Нормальное завершение. 1 Зафиксированы ошибки. ДИАГНОСТИКА Появление любой диагностики означает фатальную ошибку. usage: ... Команда вызвана с недопустимой опцией. not -s format Обнаружена строка, не содержащая символа табуля- ции. can't open file Не открывается файл. internal line too long Строка, будучи расширена путем замены символов та- буляции пробелами или иным способом, не помести- лась во внутренний рабочий буфер из 512 байт. tabspec in error Спецификация табуляции имеет недопустимый формат или позиции табуляции заданы не в порядке возрас- тания. tabspec indirection illegal Спецификация табуляции, считанная из файла (либо со стандартного ввода), не может содержать ссылку на спецификацию в другом файле. СЮРПРИЗЫ Командой newform обычно отслеживают только физические символы; однако в случае опций -i и -o отслеживаются также символы забоя, чтобы символы табуляции отмечали надлежащие логические колонки. Командой newform не выдается приглашение пользователю, если спецификация табуляции должна считываться со стан- дартного ввода (при использовании опций -i-- или -o--). Если используется опция -f, а в последовательности оп ций -o последней была указана -o-- и ей предшествовала какая-либо из опций -i-- или -o--, то формат строки спецификации табуляции будет некорректным.