在输入单词之前添加30个空格

时间:2014-07-30 08:23:49

标签: perl unix

我想在打印单词之前创建一个unix / perl脚本到30个空格。 例如:

Data:
Name                              Birthday
Michael Jordan                              Jan 1, 1800

输出文件应填写名称和生日列。

我需要精确的30个空格,因为输出文件将被提供给大型机程序,所以空格很重要。

2 个答案:

答案 0 :(得分:2)

如果您要为大型机进行格式化,则可能需要考虑使用pack。它将处理所有令人讨厌的问题,强制符合固定输出。

use strict;

my @output = (
  [ 'Name', 'Birthday' ],
  [ 'Michael Jordan', 'Jan 1, 1800' ],
  [ 'Lebron James', 'Jan 2, 1800' ],
  [ 'Hakeeeeeeeeem, The Dream Olajuwon', 'Jan 3, 1800' ]

);

foreach my $ref (@output) {
  print pack 'A30 A20 A1 A1', @$ref, '~', "\n";
}

输出:

Name                          Birthday            ~
Michael Jordan                Jan 1, 1800         ~
Lebron James                  Jan 2, 1800         ~
Hakeeeeeeeeem, The Dream OlajuJan 3, 1800         ~

我把波浪号(〜)放在那里,这样你就可以看到它也填充了日期。

请注意,Hakeeeeem的名称被截断以符合固定宽度。

答案 1 :(得分:1)

您可以使用Perl's x operator复制字符串给定次数。

示例:

perl -e 'print " "x30, $ARGV[0], "\n"' 'Name Birthday Michael Jordan Jan 1, 1800'

perl -ne 'print " "x30, $_' < datafile