Як я можу обернути текст певним розміром стовпця?


141

Я знаю, що я можу використовувати щось на кшталт cat test.txt | pr -w 80обертання рядків на 80 символів, але це дає багато місця у верхній і нижній частині друкованих рядків, і це не працює правильно в деяких системах

Який найкращий спосіб змусити текстовий файл із довгими рядками обгортати на певну ширину?

Бонусні бали, якщо ви можете вберегти це від ламання слів.

Відповіді:


176

Ви шукаєте

fold -w 80 -s text.txt
  • -w повідомляє ширину тексту, де 80 є стандартним.
  • -s каже перерватися на пробіли, а не на слова.

Це стандартний спосіб, але є й інші системи, яким потрібно "-c" замість "-w".


Працює і на OS X, але ім'я файлу має бути після аргументів. Дякую!
rdrey

2
У сторонній замітці, щоб добре відформатувати електронні листи для відповіді лише на текст, я використовую:fold -s -w 80 email.txt | sed 's/^.*$/> &/'
Marcello Romani

2
@MarcelloRomani, чи не слід використовувати ширину 78, оскільки ви готуєте два символи?
няня

1
Хм ... я так думаю. Дякуємо, що вказали на це :)
Marcello Romani

2
Зауважте, що foldрозбиває URL-адреси, а fmtні.
Skippy le Grand Gourou

51

Крім того fold, погляньте fmt. fmtнамагається вибирати розриви рядків, щоб текст виглядав добре. Він не ламає довгих слів, скоріше загортається лише пробілами. Він також приєднається до сусідніх рядків, що добре для прозової, але поганої для файлів журналів чи іншого форматованого тексту.


3
Особливо мені подобається fmt -t порівняно зі складкою
lkraav

15

1) гарантована фіксована ширина лінії з розривом слова:

fold -w 80 <text.txt

2) гарантована фіксована ширина рядка з надзвичайним розривом слова (слово розбивається лише в тому випадку, якщо воно занадто велике, щоб вмістити в рядок):

fold -sw 80 <text.txt

3) багатообіцяюча фіксована ширина рядка без жодного слова розриву (якщо слово занадто велике для розміщення в рядку, воно все одно залишається таким, яким воно є, тому нарешті деякі рядки можуть бути більшого розміру, ніж вам потрібно):

fmt -w 80 <text.txt

Занижена відповідь. Доступний у більшості систем. Хороший.
Мерк

11

Ще один (менш відомий) інструмент, який виконує те, що ви хочете, - це wrapGNU Talkfilters :

wrap -w 80 < textfile

Також (поза темою):

але це дає багато місця у верхній і нижній частині друкованих рядків

додавати, -tколи визиваєте prопускати заголовки / трейлери:

   -t, --omit-header
          omit page headers and trailers

5

А для додаткових варіантів форматування дивіться par- http://www.nicemice.net/par/


2
В даний час веб-сайт працює, є Інтернет-архів і кеш-пам'ять Google, але все-таки це показує, чому важливо розміщувати більше, ніж просто посилання, ви могли, принаймні, розмістити приклади з офіційної документації.
phk

-1
fold -w 100 -s text.txt

працював для мене, оскільки мені потрібно розділити кожен рядок до 100 символів


1
Що відповідає ваша відповідь, що інші цього не зробили?
Шельохн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.