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--, то формат строки спецификации табуляции будет некорректным.