我正在研究一個perl腳本,該腳本會查找客戶服務信息並更改服務標識。我現在的代碼可以採用2列csv文件作爲參考,並交換數字,但是當我嘗試使用「\ n」或「\ |」時像我需要,它會給我的`OL:未終止的命令
「的sed:-e表達式#1,焦炭29:未結束的'S'命令」
這裏是我的,對於只改變了作品數量原代碼引號內:
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV; #load Text::CSV module for parsing CSV
use LWP::Simple; #load LWP module for doing HTTP get
my $file = 'sid_swap.csv'; #CSV file to parse and load
my $csv = Text::CSV->new(); #create a new Text::CSV object
open (CSV, "<", $file) or die $!; #open CSV file for parsing
while (<CSV>) {
if ($csv->parse($_)) {
my @columns = $csv->fields(); #parse csv files and load into an array for each row
my $newSID = $columns[0];
my $oldSID = $columns[1];
system("sed -i 's/\<row SERVICE_MENU_ID=\"$oldSID\"/\<row SERVICE_MENU_ID=\"$newSID\"/g' customer_data.txt");
} else {
my $err = $csv->error_input;
print "Failed to parse line: $err";
}
}
close CSV;
這裏是新的代碼拋出錯誤:
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV; #load Text::CSV module for parsing CSV
use LWP::Simple; #load LWP module for doing HTTP get
my $file = 'sid_swap.csv'; #CSV file to parse and load
my $csv = Text::CSV->new(); #create a new Text::CSV object
open (CSV, "<", $file) or die $!; #open CSV file for parsing
while (<CSV>) {
if ($csv->parse($_)) {
my @columns = $csv->fields(); #parse csv files and load into an array for each row
my $newSID = $columns[0];
my $oldSID = $columns[1];
system("sed -i 's/\<row SERVICE_MENU_ID=\"$oldSID\"/\n$newSID\|/g' customer_data.txt");
} else {
my $err = $csv->error_input;
print "Failed to parse line: $err";
}
}
close CSV;
感謝您的幫助,您可以提供!
通常,sed中在時間上的一個線路進行操作。通常,在命令行中使用sed時,通過使用反斜槓轉義來添加換行符,然後逐字輸入「_Enter_」鍵。不知道它如何在Perl中工作,但我會谷歌「_sed perl newline_」。在這種情況下,sed可能不是這項工作的正確工具。 – jahroy 2013-02-19 21:48:24