powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / [FreeBSD] форматирование (центрирование) текста при выводе echo
8 сообщений из 8, страница 1 из 1
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365054
Доброго вечера труЪ-бородатым админам =)

Вот незадача, написал огромнейший скрипт, который выводит множество различных сообщений. Для более удобного анализа решил выводить различные заголовки, даже написал специальную функцию для этого:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#!/usr/local/bin/bash
# вывод форматированного заголовка
function print_header() {
	#  75  решёточек
	echo '###########################################################################'
	echo " $1 "
	echo '###########################################################################'
}

Для пущей красоты хотелось бы, чтобы текст echo " $1 " выводился по середине экрана.
В качестве эталонной меры ширины экрана выбрал значение в 75 символов, так рекомендуют на всяких сомнительных сектантских FreeBSD форумах.
Подскажите, пожалуйста, как с левой стороны сделать нужное количество пробелов?
Что-то типа:
Код: plaintext
 str_repeat (' ',  ceil (( 75 - strlen ($ 1 )) /  2 ))
с округленем в большую сторону.
Может и правда проще снова на PHP решить задачу? =)
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365061
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из-за такого пустяка ставить целый PHP - глупость. Есть гораздо более простое решение:
http://sed.sourceforge.net/sed1line.txt # center all text in the middle of 79-column width. In method 1,
# spaces at the beginning of the line are significant, and trailing
# spaces are appended at the end of the line. In method 2, spaces at
# the beginning of the line are discarded in centering the line, and
# no trailing spaces appear at the end of lines.
sed -e :a -e 's/^.\{1,77\}$/ & /;ta' # method 1
sed -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/' # method 2Подойдет?
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365065
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 function  centertext() {
	 echo  '<?php $str = "'$ 1 '"; $mrg = (75 - strlen($str)) / 2; $left = ceil($mrg) - 1; $right = floor($mrg) - 1; echo "#".str_repeat("-", $left).$str.str_repeat("-", $right)."#"; ?>' | php
}

 function  print_header() {
	#  75  решёточек
	 echo  '###########################################################################'
	 echo  `centertext $ 1 `
	 echo  '###########################################################################'
}


Ы!
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365439
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жесть, конечно.... Опцию php -r уже отменили?
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365558
fandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
# man printf


или [ FreeBSD ] так не умеет?
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365630
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fandr,

># man printf

Вроде как в самом printf не предусмотрено выравнивание по центру. Или ошибаюсь?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37365954
vkle, ни разу не слышал об опции php -r.
Вариант с sed работает, но только в командной строке, как только вставляю его внутрь функции — выравнивать прекращает.

fandr, моя цель — не чтение мануалов и забивание мозга всяким ненужным хламом, а решение конкретной задачи. Компрендо? Свои советы читать маны своим детям давать будете.

Да и сам printf вроде как умеет делать заданное количество отступов, но только с одной стороны — слева или справа. Но высчитывать нужное их количество вроде как не может.
...
Рейтинг: 0 / 0
[FreeBSD] форматирование (центрирование) текста при выводе echo
    #37366217
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
курозаврикvkle, ни разу не слышал об опции php -r.
Вполне естественно, php --help и прочие мануалы - не для Вас.

курозаврикВариант с sed работает, но только в командной строке, как только вставляю его внутрь функции — выравнивать прекращает.
Прекрасно работает и в функции. Показывайте, как вставляли, как использовали....
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / [FreeBSD] форматирование (центрирование) текста при выводе echo
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]