Как извлечь информацию об устройстве и точки монтирования из fstab, используя Perl? - PullRequest
1 голос
/ 25 января 2012

Я новичок в Perl, и мне действительно нужна помощь в решении конкретной проблемы.

Мне нужно извлечь информацию из моего fstab, но там много информации, и мне нужна только информация об устройствах и их точках монтирования. Самое близкое, что я нашел, чтобы найти ответ: http://www.freebsd.org/doc/en/articles/vinum/perl.html

Но так как я новичок в Perl, мне тяжело дорабатывать код, чтобы он помог мне с моей проблемой

Это мой fstab, но мне нужны только 3 строки "dev", включая точки монтирования, какой-нибудь умный способ сделать это?

/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

Помощь очень ценится, заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Если это ваш вывод, и вы просто хотите захватить строки, начинающиеся с /dev, вы можете просто передать его в grep, не изменяя свой скрипт perl.это работает без флага -e, это было давно, и я не могу проверить это прямо сейчас.Если ничего не помогает, используйте perl:

perlscript.pl | perl -nwe 'print if m#^/dev#'
1 голос
/ 25 января 2012

Что-то вроде этого должно быть просто отлично, тогда:

#!/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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...