以下のようなコードでテキストファイルを出力させます。
自分が意図した処理はできているのですが、出力したoutput.txtを開くと、最終行に改行記号もない空の行(この表現が正しいのか不明ですが)があります。
下のコードの$Inputに使用しているENST_list.txtも別のperlコードで出力しているのですが、同じく最終行に空の行があり、手動でその行を消してからでないと下のコードがうまく動きません。
どのような方法で解決できるか、ご教授いただけると幸いです。
#やりたいこと
1)perlのファイル出力で、下の例のような3行目が出ないようにしたい、または
2) 何らかの方法で3行目を削除したい
1行目;A\n
2行目;B\n
3行目;何もない行
#試したこと
perlで空の行問題が解決できないので、出力した後に、
ファイルの最終行である空の行をsedで削除しようとしたのですが、sedで認識される最終行($)は、改行コードが存在している一番最後の行(実際にはその下に空の行がある)のようでした。
sedで消えるのは上の例だと2行目で、
1行目;A\n
2行目;何もない行
という結果になってしまいます。
#コード
perl
1my $outfile = 'output.txt'; 2my $Input = 'ENST_list.txt'; #最終行に空の行があると1行目のマッチングが成立しなくなる 3my $bed = 'hg19_Ensembl_gene.bed'; 4open(IN , $Input) or die "$!"; 5 6 while (my $In_line = <IN>) { 7 chomp($In_line); 8 @In_data = split(/\t/, $In_line); 9 10 open(DATA, "+>> $outfile") or die "$!"; 11 open(BN, $bed) or die "$!"; 12 13 while(my $bed_line = <BN>){ 14 15 chomp($bed_line); 16 @bed_data = split(/\t/, $bed_line); 17 18 if ("$In_data[0]" eq "$bed_data[3]" ){ 19 20 print DATA "@bed_data\n"; 21 } 22 } 23 close BN; 24 close DATA; 25 }
回答5件
あなたの回答
tips
プレビュー