Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: User Sapiens от января 12, 2012, 22:48

Название: Работа с текстом в коммандной строке
Отправлено: User Sapiens от января 12, 2012, 22:48
У меня вопрос по команде fmt (если не ошибаюсь она лучше всего подходит для моей задачи)


Проблема такова (два основных варианта):

Надо взять любой текст убрать его форматирование и создать другой текст с заданным форматом.

1. Исходный текст имеет разную длину строки и в нём нет удвоенных пробелов. Новый текст должен иметь определённую ширину, которую может достигать с помощью удвоения пробела между словами.

2. Исходный текст имеет определённую ширину строки и может иметь удвоенные пробел. Задача такая же как и в первом случае.


Буду рад любой помощи
Название: Работа с текстом в коммандной строке
Отправлено: ДмиIIIй от января 12, 2012, 23:15
А man fmt религия не позволяет?

Насколько я понял, fmt не позволяет добавлять лишние пробелы для достижения выравнивания по ширине. Для этого придётся использовать что-то ещё.

Хотя у fmt есть опция для соединения всех пробелов в один (опция -u в GNU, -s в BSD), она добавляет лишний пробел после .!?. Возможно, проще для начала прогнать файл через tr -s '[:blank]' для того, чтобы объединить все пробелы до одного.

Для добавления лишних пробелов в строку, насколько я понимаю, штатной команды нет. Можете попробовать вот эти вот: http://reimagery.com/fsfd/txtutil2.htm#textjust (http://reimagery.com/fsfd/txtutil2.htm#textjust). Я сейчас сижу в Windows и мне лень их компилировать и проверять.

Название: Работа с текстом в коммандной строке
Отправлено: Dmi3 от января 13, 2012, 00:22
tr -s '[:blank:]', конечно же
Название: Работа с текстом в коммандной строке
Отправлено: User Sapiens от января 13, 2012, 00:43
Цитата: ДмиIIIй от января 12, 2012, 23:15
А man fmt религия не позволяет?
Ну прочтение man ещё не панацея от всех проблем. Да и не всегда понятно или можно этой командой решить то и так как надо.

Цитата: ДмиIIIй от января 12, 2012, 23:15
Насколько я понял, fmt не позволяет добавлять лишние пробелы для достижения выравнивания по ширине. Для этого придётся использовать что-то ещё.

Хотя у fmt есть опция для соединения всех пробелов в один (опция -u в GNU, -s в BSD), она добавляет лишний пробел после .!?. Возможно, проще для начала прогнать файл через tr -s '[:blank]' для того, чтобы объединить все пробелы до одного.
Пробелы это самая маленькая часть проблемы. Это можно решить почти любой программой вплоть до блокнота. Намного сложнее, к примеру, взять уже отформатированный текст на 80 символов и создать из одного абзаца одну строку с которой можно будет что-то сделать, а точнее изменить ширину строки на допустим 75 символов.

Цитата: ДмиIIIй от января 12, 2012, 23:15
Для добавления лишних пробелов в строку, насколько я понимаю, штатной команды нет. Можете попробовать вот эти вот: http://reimagery.com/fsfd/txtutil2.htm#textjust (http://reimagery.com/fsfd/txtutil2.htm#textjust). Я сейчас сижу в Windows и мне лень их компилировать и проверять.
Благодарю.
Надо будет посмотреть что там и как.

Ох чувствую надо будет ещё извилинами пошевелить.