私はパイプで区切られたファイルを本当に混乱させました。これはデータベースにロードする必要があります。このファイルには35個のフィールドがあり、したがって34個のパイプがあります。フィールドの1つは、レコードによっては複数の改行が含まれているHTMLコードで構成されています。残念ながら、改行がどこに落ちるかについての後藤はありません。各行が特定の文字の特定のインスタンス数を持つまで、改行文字を削除する方法はありますか?
解決策は、各行のパイプ数を数え、その数が34に達するまでその行から新しい行文字を削除することです。私はPerlに非常に精通していませんが、私がやりたいことを達成することに近いと思います。助言がありますか?
#!/usr/local/bin/perl
use strict;
open (FILE, 'test.txt');
while (<FILE>) {
chomp;
my $line = $_;
#remove null characters that are included in file
$line =~ tr/\x00//;
#count number of pipes
my $count = ($line =~ tr/|//);
#each line should have 34 pipes
while ($count < 34) {
#remove new lines until line has 34 pipes
$line =~ tr/\r\n//;
$count = ($line =~ tr/|//);
print "$line\n";
}
}
参照:http://stackoverflow.com/questions/6075327/how-do-i-handle-store-multiple-lines-into-a-single-field-read-from-a-file -in-perl – mob