<Попередній | зміст | Наступна>
fmt – простий формататор тексту
Команда fmt програма також згинає текст, а також багато іншого. Він приймає файли або стандартне введення та виконує форматування абзацу в текстовому потоці. По суті, він заповнює та з’єднує рядки в тексті, зберігаючи порожні рядки та відступи.
Для демонстрації нам знадобиться текст. Давайте піднімемо деякі з fmt інформаційна сторінка:
`fmt' зчитує вказані аргументи FILE (або стандартний вхід, якщо їх немає) і записує на стандартний вихід.
За замовчуванням порожні рядки, пробіли між словами та відступи є
`fmt' зчитує вказані аргументи FILE (або стандартний вхід, якщо їх немає) і записує на стандартний вихід.
За замовчуванням порожні рядки, пробіли між словами та відступи є
зберігається у виході; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
`fmt' надає перевагу розриву рядків у кінці речення та намагається уникнути розривів рядків після першого слова речення або перед останнім словом речення. «Розрив речення» визначається як кінець абзацу або слово, що закінчується на «.?!», за яким слідують два пробіли або кінець рядка, ігноруючи будь-які дужки чи лапки. Як і TeX, `fmt' читає цілі "абзаци", перш ніж вибирати розриви рядків; Алгоритм є варіантом алгоритму, наведеного Дональдом Е. Кнутом і Майклом Ф. Плассом у «Розбиваючи абзаци на рядки»,
"Програмне забезпечення - практика та досвід" 11, 11 (листопад 1981), 1119-1184.
зберігається у виході; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
`fmt' надає перевагу розриву рядків у кінці речення та намагається уникнути розривів рядків після першого слова речення або перед останнім словом речення. «Розрив речення» визначається як кінець абзацу або слово, що закінчується на «.?!», за яким слідують два пробіли або кінець рядка, ігноруючи будь-які дужки чи лапки. Як і TeX, `fmt' читає цілі "абзаци", перш ніж вибирати розриви рядків; Алгоритм є варіантом алгоритму, наведеного Дональдом Е. Кнутом і Майклом Ф. Плассом у «Розбиваючи абзаци на рядки»,
"Програмне забезпечення - практика та досвід" 11, 11 (листопад 1981), 1119-1184.
Ми скопіюємо цей текст у наш текстовий редактор і збережемо файл як fmt-info.txt. Тепер, припустимо, ми хотіли переформатувати цей текст, щоб він умістив стовпець шириною в п’ятдесят символів. Ми могли б зробити це, обробивши файл з fmt і -w опції:
[me@linuxbox ~]$ fmt -w 50 fmt-info.txt | голова
`fmt' читає з вказаних аргументів FILE (або стандартного введення if
жоден не надається) і записує у стандартний вихід.
За замовчуванням порожні рядки, пробіли між словами та відступи є
зберігається у виході; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
[me@linuxbox ~]$ fmt -w 50 fmt-info.txt | голова
`fmt' читає з вказаних аргументів FILE (або стандартного введення if
жоден не надається) і записує у стандартний вихід.
За замовчуванням порожні рядки, пробіли між словами та відступи є
зберігається у виході; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
Ну, це незручний результат. Можливо, нам варто прочитати цей текст, оскільки він пояснює, що відбувається:
За замовчуванням у виводі зберігаються порожні рядки, пробіли між словами та відступи; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
Отже, fmt зберігає відступ першого рядка. на щастя, fmt надає можливість виправити це:
[me@linuxbox ~]$ fmt -cw 50 fmt-info.txt
`fmt' зчитує вказані аргументи FILE (або стандартний вхід, якщо їх немає) і записує на стандартний вихід.
[me@linuxbox ~]$ fmt -cw 50 fmt-info.txt
`fmt' зчитує вказані аргументи FILE (або стандартний вхід, якщо їх немає) і записує на стандартний вихід.
За замовчуванням у виводі зберігаються порожні рядки, пробіли між словами та відступи; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
`fmt' надає перевагу розриву рядків у кінці речення та намагається уникнути розривів рядків після першого слова речення або перед
останнє слово речення. «Розрив речення» визначається як кінець абзацу або слово, що закінчується на будь-який із «.?!», за яким слідують два пробіли або кінець рядка, ігноруючи будь-які слова.
проміжні дужки або лапки. Як TeX,
`fmt' читає цілі "абзаци", перш ніж вибирати розриви рядків; Алгоритм є варіантом
що дають Дональд Е. Кнут і Майкл Ф. Пласс у «Розбиваючи абзаци на рядки»,
"Програмне забезпечення - практика та досвід" 11, 11
(листопад 1981), 1119-1184.
За замовчуванням у виводі зберігаються порожні рядки, пробіли між словами та відступи; послідовні рядки введення з різними відступами не з’єднуються; вкладки розгортаються на вході та вводяться на виводі.
`fmt' надає перевагу розриву рядків у кінці речення та намагається уникнути розривів рядків після першого слова речення або перед
останнє слово речення. «Розрив речення» визначається як кінець абзацу або слово, що закінчується на будь-який із «.?!», за яким слідують два пробіли або кінець рядка, ігноруючи будь-які слова.
проміжні дужки або лапки. Як TeX,
`fmt' читає цілі "абзаци", перш ніж вибирати розриви рядків; Алгоритм є варіантом
що дають Дональд Е. Кнут і Майкл Ф. Пласс у «Розбиваючи абзаци на рядки»,
"Програмне забезпечення - практика та досвід" 11, 11
(листопад 1981), 1119-1184.
Набагато краще. Додавши -c варіант, тепер ми маємо бажаний результат.
fmt має кілька цікавих опцій:
Таблиця 21-3: Параметри fmt
Опція Опис
Опція Опис
-c Діяти в край корони режим. При цьому зберігається відступ у перших двох рядках абзацу. Наступні рядки вирівнюються з відступом другого рядка.
![]()
-p рядок Форматуйте лише ті рядки, які починаються з префікса рядок. Після форматування вміст рядок мають префікс до кожного переформатованого рядка. Цей параметр можна використовувати для форматування тексту в коментарях вихідного коду. Наприклад, будь-яку мову програмування або файл конфігурації, який використовує символ «#» для розмежування коментаря, можна відформатувати, вказавши -p '#' так що лише коментарі будуть відформатовані. Дивіться приклад нижче.
![]()
-s Режим лише розділення. У цьому режимі рядки будуть розділені лише відповідно до вказаної ширини стовпця. Короткі рядки не будуть об’єднані для заповнення рядків. Цей режим корисний під час форматування тексту, наприклад коду, де об’єднання не бажане.
![]()
-u Виконайте рівномірний інтервал. Це буде застосовано традиційну «друкарську машинку-
![]()
![]()
стиль» форматування до тексту. Це означає один пробіл між словами і два пробіли між реченнями. Цей режим корисний для видалення «вирівнювання», тобто тексту, який був доповнений пробілами для примусового вирівнювання як на лівому, так і на правому полях.
![]()
-w ширина Форматуйте текст, щоб він поміщався в стовпець ширина символи широкі. За замовчуванням — 75 символів. Примітка: fmt насправді форматує рядки трохи коротшими за вказану ширину, щоб забезпечити балансування рядків.
![]()
Команда -p Варіант особливо цікавий. З його допомогою ми можемо відформатувати вибрані частини файлу за умови, що всі рядки, які потрібно форматувати, починаються з однакової послідовності символів. Багато мов програмування використовують знак фунта (#) для позначення початку коментаря, тому їх можна відформатувати за допомогою цієї опції. Давайте створимо файл, який імітує програму, яка використовує коментарі:
[me@linuxbox ~]$ cat > fmt-code.txt
# Цей файл містить код з коментарями.
# Цей рядок є коментарем.
# Слідом за іншим рядком коментарів.
# І інше.
З іншого боку, це рядок коду. І ще один рядок коду.
І інше.
[me@linuxbox ~]$ cat > fmt-code.txt
# Цей файл містить код з коментарями.
# Цей рядок є коментарем.
# Слідом за іншим рядком коментарів.
# І інше.
З іншого боку, це рядок коду. І ще один рядок коду.
І інше.
Наш зразок файлу містить коментарі, які починаються з рядка «#» (#, за яким слідує пробіл), і рядки «коду», які цього не роблять. Тепер, використовуючи fmt, ми можемо відформатувати коментарі та залишити код недоторканим:
[me@linuxbox ~]$ fmt -w 50 -p '# ' fmt-code.txt
# Цей файл містить код з коментарями.
# Цей рядок є коментарем. Слідом інший
# рядок коментаря. І інше.
З іншого боку, це рядок коду. І ще один рядок коду.
І інше.
[me@linuxbox ~]$ fmt -w 50 -p '# ' fmt-code.txt
# Цей файл містить код з коментарями.
# Цей рядок є коментарем. Слідом інший
# рядок коментаря. І інше.
З іншого боку, це рядок коду. І ще один рядок коду.
І інше.
Зверніть увагу, що суміжні рядки коментарів об’єднані, а порожні рядки та рядки, які не починаються із зазначеного префікса, зберігаються.
документація