0
파일을 한 줄씩 읽고 구문 분석하려고하지만 이상한 동작을 일으키는 파일 끝에 구분 기호가 있습니다. 그것은 간단 읽을오류가있는 탭 구분 파일의 불량 문자
20111129 AMEX BHO OTCBB BHODD
20111129 AMEX LCAPA NASDAQ LMCA
코드 : 여기
파일의 라인은 내가 좋아하는 외모를 읽고있는 무슨이다0> date '20111129'
1> old Exch 'AMEX'
2> old symb 'BHO'
3> new Exch 'OTCBB'
'> new symb 'BHODD
:
my(@line) = <INFO>;
foreach $line(@line) {
chomp($line);
my @vals = split('\t', $line);
my $date = $vals[0];
my $old_exch = $vals[1];
my $old_symb = $vals[2];
my $new_exch = $vals[3];
my $new_symb = $vals[4];
print "0> date '$date'\n";
print "1> old Exch '$old_exch'\n";
print "2> old symb '$old_symb'\n";
print "3> new Exch '$new_exch'\n";
print "4> new symb '$new_symb'\n";
출력은 다음과 같이 나타납니다
그래서 각 줄 끝 부분에는 '인쇄'가 시작되는 문자가 있습니다. 라인의 시작 부분에, 거기에 인쇄해야하는 4를 닦아냅니다. 이는 인쇄가 줄의 시작 부분으로 되돌아 가야하는 위치를 재설정하는 문자와 같습니다. 이 가짜 캐릭터를 '쫓아내는'방법이 있습니까? 또는 아마도 내 코드에 어떤 종류의 버그가 있지만 비슷한 스크립트를 가지고있는 다른 스크립트가 있습니다 ...
감사합니다 사전에!
돈
cool thanks man! 나는 이것을 다음과 같이 수정했다 : cat Changes.AMEX.0202.txt | sed 's/\ r //'> out –
추가 프로세스를 사용하지 마십시오. sed는 인수로 지정된 파일 이름에서 입력을받습니다. sed '...'Changes.AMEX.0202.txt> out – JRFerguson
@JRFerguson : 가장 비용이 적게 드는 솔루션은 Perl 자체에서 대체하는 것입니다. – choroba