2011-11-10 14 views
0

私はx14でテキスト識別子を持つxFEで区切られた特定の場所でテキストを削除するスクリプトを作成しています。ここでファイルの読み取り行に空の文字列で上書きするPerl

はラインの例です。

þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ \xFE þþ 

(注:。。XFEの文字が正しく表示されません申し訳ありませんが)

私が欲しいものn番目のþþを取得することです。私はすでに\ xFE上でそれを分割して値をチェックすることができますが、私がしたいのは、値を空白にすることです。

アイデア?

UPDATE

ちょうど私が文字þþ指定に囲まれた内容を交換したい私は、ファイルを読んでやっていると、そのファイル内の行のn番目の位置に、明確にします。 \ xFEおよび\ x14文字を使用するCSVファイルです。私がしようとしているのは、\ xFEの行を分割し、\ x14文字の間の値を取得して、その値をファイルに上書きすることです。

+0

split()、assign、join()を試しましたか?あなたが何を考えて試したのか、そしてなぜそれがうまくいかなかったのかを知ることは有益でしょう。そうすれば、提案された答えはあなたがすでに問題を抱えていた解決策を示唆しません。 –

+0

上記の行から何が得られるべきかの例も非常に役立つでしょう –

答えて

0

文字「aaZbbZccZddZeeZff」を使用しているため、使用している文字ではなく、n番目の項目を識別しやすくなります。正規表現として

、4番目の項目を削除する、

my $data = 'aaZbbZccZddZeeZff'; 
$data =~ s/((?:..Z){3})../\1/; 
print $data; 
print "\n"; 

これは文字列を返す「aaZbbZccZZeeff」(二重の区切りに注意してください - これは一致するように区切り文字を追加することによって修正することが容易であるが)。

これを既にリストに分割している場合は、スプライスを使用してリストから項目を削除し、その文字列を再構成することもできます。

my $data = 'aaZbbZccZddZeeZff'; 
my @data = split('Z',$data); 
splice(@data,3,1); 
print $data; 
print "\n"; 

これは 'aaZbbZccZeeZff'を出力します。

関連する問題