【发布时间】:2014-04-08 21:25:46
【问题描述】:
我尝试从一个简单的 perl 命令中获取特定输出,然后将其写入一个变量,以便在我的脚本中稍后在体育场使用。
我必须遵循以下代码:
#!/usr/bin/perl
use strict;
use warnings;
my $serial = system("hdparm -I /dev/sda | grep 'Serial Number:'");
print $serial;
这会生成以下输出:
0root@spool-B-01:~# ./test.pl
Serial Number: 9VS3D79X
但我需要输出如下:
0root@spool-B-01:~# ./test.pl
9VS3D79X
我用 awk 和 sed 尝试了一些东西。但这不会以我需要的方式提供输出。
例如:
#!/usr/bin/perl
use strict;
use warnings;
use Sys::Hostname;
my $serial = system("hdparm -I /dev/sda | grep 'Serial Number:' | sed -e 's/Serial Number://g'");
print $serial;
显示如下输出:
0root@spool-B-01:~# ./test.pl
9VS3D79X
这几乎是正确的,但您仍然在序列号之前看到了标签。
我希望有人可以帮助我弄清楚这些东西并以正确的方式去做。
【问题讨论】:
-
sed -e 's/Serial Number:|\s//g'? -
如果您使用 Perl 编码,为什么要使用
grep、awk、sed等? -
试试sed -e 's/^\s\+序列号://g'