0
#!/approot/opt/bin/perl
use strict;
my $file = $ARGV[0];
open FILE, $file or die;
my $line;
while (<FILE>) {
if (m/create unique clustered index \S+ on \S+ \(([^\)]+)\)/) {
$line = $1;
}
s/chargeable_items/$line/;
print;
}
これは私がこの作業をしようとしているテキストファイルですが、毎回置き換えようとしています。文字列を空白に置き換えます。あなたはwhile
ループ内でファイルのライン・バイ・ライン読んでいるキャプチャ・グループを変数として格納し、置換演算子は空白として戻しますか?
CREATE TABLE t_test
(
system_name varchar(20) NOT NULL,
server_type smallint NOT NULL,
chargeable_system bit NOT NULL,
bit NOT NULL
)
create unique clustered index host_idx on dbo.t_host (system_name, server_type, environment)
create nonclustered index tt_host on dbo.t_host (N.A.)
ヒント: 'while(<>)'は引数として渡されたファイルから読み込むので、 'FILE'を開く必要はありません。 – ikegami
@Gary私の答えに作業例を追加しました。 –
@Thanks markus私はあなたがやったことを見て、人は私が取ったルートよりもはるかに効率的だそうです。私はファイルから行を読み込み、配列内に格納することにしました。次に、配列から読み込んで、変数内に格納する必要があるものを見つけ、配列から再度読み込み、必要なものを置き換えます。 – Gary