我尝试创建一个在一行中捕获单词的正则表达式(基本上它是一个磁盘设备名称),但不包括所有具有某种格式的名称。例如:
if (/^\s*(?:\d+\s+){3}(\S+)\s.*/)
此正则表达式匹配:
8 80 7814026584 sdf
这行中的sdf。但是我想要排除一些ram磁盘。例如ram1,ram2,ram3,.. ram15等。如何排除以“ram”开头的所有设备?
答案 0 :(得分:1)
通过示例,您可以更轻松地split该行,然后您也可以轻松处理。
我认为第四个字段始终是处理或排除该行的标准。
假设$fh
是您正在处理的文件的文件句柄
while (<$fh>)
{
my @fields = split;
# Skip this line if the fourth field starts with 'ram'
next if $fields[3] =~ /^ram/;
# Process as needed
# Numbers are at indices 0, 1, 2, and disk device name is $fields[3]
}
上面的split
与split ' ', $_
相同,其中' '
是任意数量的空白区域。
答案 1 :(得分:0)