2017-05-16 106 views
-1

首先,我完全不熟悉Perl,我需要从文件中删除字符串。无法在Perl脚本中执行命令

代码,我有:

#!/usr/bin/perl -w 

use warnings; 
use strict; 

my $server_a = 'xxx.test.ch'; 

print "$server_a\n"; 
perl -pli -e "s/$server_a//" '/Users/user/Downloads/exports'; 

当我执行这个脚本我得到这个错误:

syntax error at nfs_test.sh line 9, near "pli -e " 
Execution of nfs_test.sh aborted due to compilation errors. 

我找不到什么是错的,我希望你能帮助我。

+0

你在perl文件中调用perl? – Jens

+0

我以为这是错误,但我不知道如何解决它.. – Damon

+0

你在这里试图做什么? – Jens

回答

3
#! /usr/bin/perl 
use warnings; 
use strict; 

@ARGV = '/Users/user/Downloads/exports'; 
$^I = '~'; 

my $server_a = quotemeta 'xxx.test.ch'; 
s/$server_a//, print while <>; 

@ARGV数组包含参数,它由菱形运算符迭代。

$^I相当于-i选项。

您可能需要quotemeta,因为您并不是指服务器名称中的点“除了换行符之外的任何内容”。

+0

之前我试了一下,并毁了它,我会尽力了解你的。因此,基本上每行不包含xxx.test.ch的行都将保持不变,但包含xxx.test.ch的每行都将被删除,是否正确? – Damon

+0

如果它包含“-sec = lala.test.ch:tutu.test.ch:xxx.test.ch:gege.test.ch”会怎么样? – Damon

+0

@Damon:通过在原始代码中使用替换来修复。 – choroba