2017-05-16 103 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