【发布时间】:2016-07-16 14:40:51
【问题描述】:
我有一个 .csv 文件,我想在其中查找特定单词“ELECTRICIANS”,它是该列中的第一个条目。我想打印名称为 ELECTRICIANS 的整个列,如果我 grep 任何其他单词,应该打印一个错误。
我已经进行了grep操作如下:
my $exit = system("grep -q $column_name $file_name");
if ($exit == 0)
{
print "Entered column name $column_name found in file $file_name\n";
}
else {
print "Column name not found, try again!\n";
exit;
}
现在如何打印“ELECTRICIANS”下文件中的列?
.csv文件内容如下:
WEEK,SITE ENGINEERS,SITE ENGINEERS 2,ELECTRICIANS,ELECTRICIANS 2
ONE,13,28,17,29
TWO,13,30,18,27
THREE,13,30,14,23
FOUR,15,30,12,29
FIVE,15,22,16,24
SIX,16,30,20,30
SEVEN,12,27,13,29
EIGHT,19,22,16,29
NINE,19,21,19,30
TEN,12,22,14,30,13
【问题讨论】:
-
在您的方法中,您必须将 grep 命令的结果存储在 Perl 变量中。这意味着您不能使用
system("grep..."),而是使用qx(grep....)之类的东西。但是为什么你创建一个子进程只是为了 grepping 行?您可以完全在 Perl 中轻松完成此操作。 -
我不知道 qx 语法。如何将 grep 命令的输出保存到变量中?
-
my $output = qx(...)。请参阅 perlop 联机帮助页。 -
我已经修复了您的 csv 文件示例的格式。如果我弄错了,请自行编辑。