我是Perl的新手,我真的需要一个特定问题的帮助。
我需要从我的fstab中提取信息,但那里有很多信息,我只想了解有关设备及其挂载点的信息。 我找到答案的最接近的是: http://www.freebsd.org/doc/en/articles/vinum/perl.html
但是因为我是Perl的新手,所以我很难调整代码,所以它可以帮助我解决问题
这是我的fstab,但我只想要3个“开发”行,包括挂载点,任何聪明的方法都可以做到这一点?
/dev/disk/by-id/usb-ST925041_0AS_FF9250410A0000000000005FF87FF7-part2 /
ext3 noatime,nodiratime,acl,user_xattr 1 1
/dev/disk/by-id/usb-ST925041_0AS_FF9250410A0000000000005FF87FF7-part3 /var/log
ext3 noatime,nodiratime,acl,user_xattr 1 2
/dev/disk/by-id/usb-ST925041_0AS_FF9250410A0000000000005FF87FF7-part1 swap swap
defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
非常感谢帮助,提前谢谢!
答案 0 :(得分:2)
如果这是你的输出,并且你只想抓住以/dev
开头的行,你可以简单地将它传递给grep,而不需要改变你的perl脚本。
perlscript.pl | grep "^/dev"
不确定是否在没有-e
标志的情况下工作,已经有一段时间了,我现在无法测试它。如果所有其他方法都失败了,请使用perl:
perlscript.pl | perl -nwe 'print if m#^/dev#'
答案 1 :(得分:1)
这样的事情应该没问题,然后:
#!/usr/bin/perl
open (my $fstab, "<", "/etc/fstab") or die "Cannot open /etc/fstab.";
while(<$fstab>)
{
my @list = split;
next if($list[0] !~ m,^/dev,);
print "Device : $list[0]\nMountpoint : $list[1]\n";
}
close($fstab);
exit 0;
请记住,如果您的fstab具有UUID =条目或任何类型的文件系统,而这些文件系统不是/ dev中列出的设备,则无效。