【发布时间】:2018-08-17 09:06:30
【问题描述】:
我正在尝试使用我的 Perl 脚本中的 sed 命令。我必须从 25GB 的文件中获取最后一小时的数据,但是当我从终端运行相同的命令时,它工作正常,但相同的命令在 Perl 脚本中不起作用。我正在使用的系统变量,这导致了我认为的问题,不知道如何处理:
my $sed_cmd = 'sed -n "/'.$last_hour.'/,\$p"';
my $outstr=`ssh $remote_addr $sed_cmd $dir/$remote_filename`;
上面的命令被转换成这样:sed -n "/15:12:24/,\$p" 并且从 perl 脚本这不起作用。
但实际上这个命令是从终端工作的:sed -n "/15:09:40/,\$p" file
唯一的区别是当我用 ssh 调用这个 sed 命令时我得到错误,否则它工作正常。你能建议是什么问题
【问题讨论】:
-
perl 可以处理,为什么要调用
sed? -
可能是
my $sed_cmd=quotemeta('sed -n "/'.$last_hour.'/,\$p"')? -
伙计们,他正在使用 ssh 将 sed 命令发送到远程主机。冷静。
-
@anubhava,您能否建议我们如何从 perl 而不是使用 sed 做到这一点。我想 grep 上一小时打印的所有行
-
@wolfrevokcats quotemeta 为我工作