Смещение вывода команды направо

Проверьте i8kUtils пакет. Это обычно помещается в носатый (прохладное приложение мониторинга, которое может находиться на Вашем рабочем столе.)

6
03.08.2014, 23:24
5 ответов
cal | sed 's/^/     /'

Объяснение

  • cal |: вывод кал...
  • sed 's/^/ /' sed, который будет искать начало строк ^, заменяя их пробелами. Здесь вы можете изменить количество пробелов в соответствии с требуемым форматированием.

Правка

Чтобы сохранить подсветку текущего дня из cal, нужно сказать ему, чтобы он выводил "цвет" (подсветку) на трубу. Из man cal

   --color [when]
          Colorize output.  The when can be never, auto, or always.  Never will turn off coloriz‐
          ing  in  all  situations.  Auto is default, and it will make colorizing to be in use if
          output is done to terminal.  Always will allow colors to be outputed when  cal  outputs
          to pipe, or is called from a script.

N.B. в руководстве, похоже, есть опечатка; мне нужен был =, чтобы она заработала. Следовательно, последняя команда -

cal --color=always | sed 's/^/     /'
8
27.01.2020, 20:20

С помощью пасты :

cal | paste /dev/null -
5
27.01.2020, 20:20

Можно использовать sed:

cal | sed -e 's/^/    /'

Вышеуказанное отступит от календаря на четыре пробела, вставляя их в начале (^) каждой строки. Вы можете изменить отступ по своему усмотрению или добавить другие отступы.

Если вы хотите, чтобы он был идеально выровнен по размеру в любом терминале, вы можете использовать printf и stty с более уродливым циклом:

read height width < <(stty size)
cal | while read line ; do printf "%${width}s" "$line" ; done

(stty size является нестандартным, но широко поддерживается)

.
4
27.01.2020, 20:20
cal | nl -bn

... будет работать, потому что nl всегда отступает от входных строк, которые не пронумерованы, чтобы равняться отступу, который он добавил бы к тем, что он делает. По умолчанию nl не нумерует разделы ввода -h eader или -f ooter, а только нумерует строки оди -b . Если вы также укажете n ot для нумерации -b ody строк, он вообще ничего не будет нумеровать и только вставит отступ в каждую строку ввода.

Используйте переключатели разделителя -w idth и -s , чтобы настроить размер отступа.


cal; cal | nl -bn

    December 2015   
Su Mo Tu We Th Fr Sa
       1  2  3  4  5 
 6  7  8  9 10 11 12 
13 14 15 16 17 18 19 
20 21 22 23 24 25 26 
27 28 29 30 31       

           December 2015   
       Su Mo Tu We Th Fr Sa
              1  2  3  4  5 
        6  7  8  9 10 11 12 
       13 14 15 16 17 18 19 
       20 21 22 23 24 25 26 
       27 28 29 30 31       

Также есть:

cal | pr -to[num]

... где [num] - это количество пробелов, которое вы хотите вставить в начало каждой строки. pr обычно печатает 66 строк на страницу , но -t указывает ему опустить вставки верхнего / нижнего колонтитула и просто распечатать ввод для вывода. Затем используется переключатель поля -o ffset для вставки столько пробелов, сколько требуется в [num] в начале каждой выходной строки:

cal; cal | pr -to10

    December 2015   
Su Mo Tu We Th Fr Sa
       1  2  3  4  5 
 6  7  8  9 10 11 12 
13 14 15 16 17 18 19 
20 21 22 23 24 25 26 
27 28 29 30 31       

              December 2015   
          Su Mo Tu We Th Fr Sa
                 1  2  3  4  5 
           6  7  8  9 10 11 12 
          13 14 15 16 17 18 19 
          20 21 22 23 24 25 26 
          27 28 29 30 31       
3
27.01.2020, 20:20

Вот пример использования ex :

ex +"%norm 20I " +%p -scq! <(cal)

Замените 20 на необходимое количество пробелов. Использование «% norm 20I» более эффективно, чем повторение множества пробелов с заменой - «% s / ^ / /» .

0
27.01.2020, 20:20

Теги

Похожие вопросы