Когда я загружаю файл, он имеет окончания строки CRLF (DOS или Windows). Когда вы запускаете это через Unix indent
, он не любит обратную косую черту, за которой следует CR вместо NL (иначе LF). Если вы замените окончание строки CRLF, она должна быть отформатирована на indent
.
Проблема в том, что indent
ожидает, что обратная косая черта будет сопровождаться новой строкой, но CR не является символом новой строки.
Если у вас есть команда dos2unix
или dtou
, используйте это. Если нет, то используйте tr
:
tr -d '\015' <sfs_code.c> x31; mv x31 sfs_code.c
Вы также можете улучшить положение вещей, заменив вкладки с 8-ми пробелов. Опять же, могут быть и другие инструменты, которые могут сделать эту работу, но классический инструмент pr
:
pr -e8 -l1 -t sfs_code.c > x31; mv x31 sfs_code.c
обратной косой черты и новой строки последовательности для разделения строк на несколько строк очень кодирование 1980s-стиль. Поскольку в стандарте C89/C90 вводится конкатенация строк, это необязательно (хотя оно по-прежнему считается законным C).
На 6781 линиях, это довольно большой файл. Он включает в себя ряд других исходных файлов (.c
) и некоторые заголовки. Я ткнул на него uncrustify
, у которого не было проблем с ним; после удаления символов CR, indent
был в порядке с ним.
(я использовал свою собственные ule
- Uniform Line окончания - программу для выполнения преобразования Это один из многих различных возможных методов.).
Обратите внимание, что ваша команда tr
не удалась, поскольку он отображается как обратный слэш и символ новой строки в пустой (и оставил символы CR неизменными), что не то, что вы хотите. Команда tr
отображает одиночные символы; это не подходит для сопоставления комбинаций символов по вашему желанию и необходимости.
'Это выглядит уродливым'. Установите этот редактор, чтобы использовать этот размер' 8' для этого файла, и он будет выглядеть лучше. – dxiv