【发布时间】:2014-08-19 03:40:24
【问题描述】:
我有一个基本上是组 ID 列表的数组。我将使用数组将 ID 放入使用 foreach 循环的专有 linux 命令中,但也使用数组元素来命名文件(每个 ID 都需要将其输出到自己的单独文件中)。我遇到了一些问题,打开文件并使用 AWK 查找和打印列,或者我也尝试了 split 命令,但我也无法正常工作。以下是我目前所拥有的示例:
#!/usr/bin/perl -w
# Title: groupmem_pull.pl
# Pupose: Pull group membership from group IDs in array
use strict;
use warnings;
my $gpath = "/home/user/output";
my @grouparray = (
"219",
"226",
"345",
"12",
);
print "Checking Groups:\n";
foreach (@grouparray)
{
print `sudo st-admin show-group-config --group $_ | egrep '(Group ID|Group Name)'`;
print `sudo st-admin show-members --group $_ > "$gpath/$_.txt"`;
#print `cat $gpath/$_`;
#print `cat $gpath/$_ | awk -F"|" '{print $2}' >`;
open (FILE, "$gpath/$_.txt") || die "Can't open file\n: $!";
while(my $groupid = <FILE>) {
`awk -F"|" '{print $2}' "$gpath/$_.txt" > "$gpath/$_.txt"`;
#print `cat "$gpath/$_.txt" | awk -F"|" '{print $2}' > $_.txt`;
}
现在它在 AWK 文章上的错误是“在 ./groupmem_pull.pl 第 57 行第 2 行使用未初始化的值 $2 连接 (.) 或字符串”。第一个命令的输出基本上将每个组 ID 拉入一个用管道分隔的文本文件中。我在这个方面玩得很开心,而且我无法让我在 stackoverflow 上找到的一些示例正常工作。感谢您的帮助!
【问题讨论】:
-
你已经在 Perl 中了,它是 AWK 的超集,那么你为什么不在你的 Perl 代码中做 awk 的东西呢?此外,如果您这样做,则无需编写临时文件...只需直接从 Perl 读取
st-admin命令输出即可。 -
嗨,Jim,我对脚本很陌生,所以我的知识有限。您能否通过直接从 Perl 运行 st-admin 命令来扩展您的意思?这不是我已经在做的吗?
标签: arrays perl awk foreach split