我想在打印单词之前创建一个unix / perl脚本到30个空格。 例如:
Data:
Name Birthday
Michael Jordan Jan 1, 1800
输出文件应填写名称和生日列。
我需要精确的30个空格,因为输出文件将被提供给大型机程序,所以空格很重要。
答案 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