2017-10-29 12 views
0

TSV (탭으로 구분 된) 파일을 한 행씩 읽고 특정 열을 처리하려고합니다. 나머지 열을 하나씩 오프셋하므로 열이 비어 있으면이 코드가 실패합니다. read이 빈 열을 올바르게 처리하도록하려면 어떻게해야합니까? https://www.dropbox.com/s/isxirf90jpdyp0p/day1.ale?dl=0TSV 파일을 빈 열로 라인별로 읽습니다.

난 그 어떤 차이가 경우는, 맥 OS 시에라을 사용하고 언급해야한다 : 여기

input_file="day1.ale" 
while IFS=$'\t' read Name Tracks Start End Take Tape UNC FPS Reel Scene 
do 
echo $FPS 
done < $input_file 

은 샘플 파일에 대한 링크입니다.

+0

'day1.ale'은 DOS'CRLF' 라인이 끝나는 것을 알고 있습니까? –

+0

나는 그것에 대해 생각해 보지 못했지만, 왜 이런 상황에서 문제가되는지 알지 못한다. –

+0

파일 크기 이외에, IFS = '\ t''로 읽는 것에 영향을 주어서는 안되지만, 정말 이상했다. . 나는 두 버전 (원본과'dos2unix'를 통해 실행)과 적어도 리눅스에서는'read'만으로'CRLF'를 뱉어 냈지만, mac (pre-OSX)가 사용되기 때문에 나는 mac에 대해 모른다. 'CR' 라인 끝에 ... –

답변

0

나는이 같은 내 자신의 질문에 대답하는 방법을 알아 냈어요 :

input_file="day1.ale" 
input_data=$(cat $input_file | tr \\11 \\7) # replace tabs with alarm bell 
while IFS=$'\a' read Name Tracks Start End Take Tape UNC FPS Reel Scene 
do 
echo $FPS 
done <<< "$input_data" 

이 질문은 거의 read in bash on tab-delimited file without empty fields collapsing의 중복이지만, 대답 때문에 while 루프의 약간 다릅니다. 질문을 삭제해야하는지 확실하지 않습니다.