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