我在Perl中进行的系统调用如下:
@filesystems = `/nas/bin/nas_fs -query:TypeNumeric==1:IsRoot==False -fields:RWServers,ROServers,Name,RWMountpoint, -format:%L:%L:%s:%s\\\\n`;
运作良好。它得到了我想要的信息:
server_5::fs_pipeline_950155:/root_vdm_30/fs_pipeline_95015
:server_7:fs_nfs_esx_wks_vms:
server_7::fs_ovid3:/fs_ovid3
但是,如果我想真的只填充@filesystems
条目,其中第1列中有值(即第一个值...示例中的第1行和第3行上面),我不确定如何实现这一目标。 awk -F
通过管道似乎不起作用。
答案 0 :(得分:1)
你可以在Perl中做到这一点:
my @temp = `/nas/bin/nas_fs -query:TypeNumeric==1:IsRoot==False -fields:RWServers,ROServers,Name,RWMountpoint, -format:%L:%L:%s:%s\\\\n`;
my @filesystems = grep { !/^:/ } @temp;
这会过滤掉列表中以冒号开头的所有条目。
或者,您可以调用另一个进程:
my @filesystems = `/nas/bin/nas_fs <args> | grep -v '^:'`;
grep -v
仅返回与模式不匹配的行,因此排除以冒号开头的行。
答案 1 :(得分:1)
您可以在填充@filesystems
之后在脚本中执行此操作:
# Removes blank lines and lines starting with :
@filesystems = grep { !/(^:|^\s*$/ } @filesystems;