Perl grep 获取第 1 列中的值
Perl grep for a value in column 1
我在 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
但是,如果我想真的只用第 1 列中有值的条目填充 @filesystems
(即第一个值 ... 第 1 行和上面示例中的 3),我不确定如何实现这一点。 awk -F
通过管道似乎不起作用。
您可以在 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
returns 仅不匹配模式的行,因此排除以冒号开头的行。
填充 @filesystems
后,您可以在脚本中执行此操作:
# Removes blank lines and lines starting with :
@filesystems = grep { !/(^:|^\s*$/ } @filesystems;
我在 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
但是,如果我想真的只用第 1 列中有值的条目填充 @filesystems
(即第一个值 ... 第 1 行和上面示例中的 3),我不确定如何实现这一点。 awk -F
通过管道似乎不起作用。
您可以在 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
returns 仅不匹配模式的行,因此排除以冒号开头的行。
填充 @filesystems
后,您可以在脚本中执行此操作:
# Removes blank lines and lines starting with :
@filesystems = grep { !/(^:|^\s*$/ } @filesystems;