📄 doc_devlist
字号:
#!/usr/bin/perl -w# vi: set ts=4:sub parse_devices;@ARGV = ('-') unless @ARGV;$ARGV=shift @ARGV;if(!open(FILE,$ARGV)){ warn "Can't open $ARGV: $!\n"; exit 1;}while(<FILE>){ push @lines,$_;}$driver = "";$mode = 0;while($line=shift @lines){ $_ = $line; if( $mode == 0){ if( m/^[\w-]+: / ){ chomp; $l=$_; $mode = 1; } }elsif($mode==1){ if( m/^ / ){ s/^ +//; chomp; $l="$l $_"; $mode = 1; }else{ #print "$l\n"; if($l =~ m/^Driver: /){ $_ = $l; s/^Driver: //; $driver = $_; } if($l =~ m/^Devices:/){ $l =~ s/^Devices://; parse_devices($l); } $l=""; $mode = 0; $_ = $line; if( m/^[\w-]+: / ){ chomp; $l=$_; $mode = 1; } } }}sub parse_devices{ my $devs = $_[0]; my $mfr = "unknown"; my $dev = "unknown"; my $name = "unknown"; #print("parse_devices $devs\n"); while($devs){ $_=$devs; if(m/^ *\[([^\]]+)\](.*)/){ $mfr = $1; #print "recognized mfr $mfr\n"; $devs = $2; }elsif(m/^ *\(([^\)]+)\)(.*)/){ $name = $1; #print "recognized name $name\n"; $devs = $2; }elsif(m/^ *([^\(,]+)(.*)/){ $dev = $1; $devs = $2; $dev =~ s/ *$//; #print "recognized dev $dev\n"; }elsif(m/^ *,(.*)/){ $devs = $1; printf "%-28s %-18s %-17s %-10s\n", $mfr, $dev, $driver, $name; }else{ print "parse error $_\n"; $devs = ""; } } printf "%-28s %-18s %-17s %-10s\n", $mfr, $dev, $driver, $name;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -