将命令输出向右移动

将命令输出向右移动

假设我正在编写一个.bashrc文件,以便在登录终端中为我提供一些有用的信息,并且我告诉它运行 cal 命令(一个不错的命令)。我将如何将生成的日历向右移动以匹配.bashrc“欢迎消息”其余部分的格式?

答案1

cal | sed 's/^/     /'

解释

  • cal |:将 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.

注意手册中似乎有一个拼写错误;我需要一个=才能让它工作。因此,最终的命令是

cal --color=always | sed 's/^/     /'

答案2

cal | nl -bn

...会起作用,因为nl总是缩进它没有编号的输入行,以等于它添加到的缩进量。默认情况下,nl不对输入的-h开头或-f结尾部分进行编号,而仅对-b正文行进行编号。如果你还告诉它n不要对正文行进行编号-b,它根本不会对任何内容进行编号,并且只会在每个输入行中插入缩进。

使用-width 和-separator 开关调整缩进的大小。


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告诉它省略页眉/页脚插入,只将输入打印到输出。然后使用 ffset 边距开关-o插入所需数量的空格[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

paste

cal | paste /dev/null -

paste将文件行粘贴在一起,中间带有制表符。在这里,我们将空文件 ( /dev/null) 与pastestdin ( ) 粘贴在一起,这是通过管道传递-的输出。cal

答案4

这是使用的示例ex

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

更改20为所需空格数。使用"%norm 20I "比通过替换重复许多空格 - 更有效"%s/^/ /"

相关内容