我有以下格式的数据输出。 我从控制台上的命令获取此输出。Perl - 格式化输出数据
Number: 9
state: Online
Data: W1F-9YN
Device: 41
Number: 10
state: Online
Inquiry Data: W1-9YN
Device: 41
Number: 11
state: Online
Inquiry Data: W1-9YN
Device: N/A
Number: 42
state: Online
Data: WD-W WDZ-04J
但是,现在我想将其更改为输出表格格式。 就像如下图所示
Device number state data
41 10 online WY1-996
42 12 offline WY2-996
. . . .
. . . .
. . . .
我试着用如下的代码做的,但我不能够在正确的格式和一段时间在一个单一的列中的所有数据显示,高达安排。任何人都可以帮我吗?
open WDLIST, "Command";
while (<WDLIST>) {
if (m/Device\s*:\s*(\d+)/) {
$enDevice = $1;
print "$enDevice";
}
if (m/Number\s*:\s*(\d+)/) {
$umber = $1;
print "$Number";
chomp;
}
if (m/state\s*:\s*(w+)/) {
$State = $1;
print"$State";
}
if (m/Data\s*:\s*(w+)(d+)(\-)(\s)/) {
$Data = $1;
print"$Data";
}
}
谢谢!
这很像http://stackoverflow.com/questions/12606045/converting-form-layout-to-table-csv-layout- in-perl – RobEarl
这个问题似乎只对每个输入文件有一行数据,对于简单的数据CSV文件格式化起来要容易得多。 (直到你意识到你的数据可以包含逗号和引号) – pmakholm
一些提示:1.你没有正确匹配最后一行。确保你的正则表达式匹配你想要捕捉的东西。 2. $ umber - 是一个错字吗? 3.您不打印制表符,并且不打印换行符。 – Bitwise