약 30K 줄이 있는 input.txt 탭으로 구분된 텍스트 파일이 있고 각 줄(s1..s30K 줄)에 누락된 값(예: 공백)이 있는지 확인하고 누락된 값을 0 값으로 채우고 싶습니다. 보세요.txt
입력.txt
id no1 no2 no3 no4
s1 23 34 45 12
s2 4 4
s3 4 8 0
출력.txt
id no1 no2 no3 no4
s1 23 34 45 12
s2 0 4 4 0
s3 4 0 8 0
답변1
awk로 이 작업을 수행할 수 있습니다.
awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = 0 }; 1' file
설명하다
FS 및 OFS를 탭으로 설정하면 출력이 적절하게 구분됩니다. for 루프는 각 필드를 살펴보고 비어 있으면 0으로 설정합니다. 마지막은 의 약자입니다 { print $0 }
.
답변2
나는 선호한다:
sed 's/<TAB> /<TAB>0/g' <input.txt >output.txt
<TAB>
실제 TAB 문자로 대체 (보통 을 클릭한 Ctrl-V후 획득 Tab)