특정 열의 빈 셀을 바꾸는 방법

특정 열의 빈 셀을 바꾸는 방법

열이 많고 다른 열에 빈 셀이 있는 파일이 있습니다. 세 번째 열에서만 빈 셀을 NA로 바꾸고 싶습니다. 내 파일:

1 id1 info 
2     otherinfo
3 id2
4     noinfo
5 id3
6 id4 info2 

따라서 출력은 다음과 같아야 합니다.

1 id1 info 
2     otherinfo
3 id2 NA
4     noinfo
5 id3 NA
6 id4 info2

나는이 명령을 시도했습니다 (누락된 값 공간을 0으로 바꾸기), 그러나 모든 빈 셀을 대체합니다. 어떤 제안이 있으십니까?

답변1

짧은해결책:

awk -F'[[:space:]]' '$2 && !$3{ $3="NA" }1' file

산출:

1 id1 info 
2     otherinfo
3 id2 NA
4     noinfo
5 id3 NA
6 id4 info2

답변2

파일에 고정 너비 열이 있는 경우 GNU awk를 사용하여 해당 열을 구문 분석할 수 있습니다 FIELDWIDTHS. 예를 들면 다음과 같습니다.

awk -v FIELDWIDTHS='1 1 3 1 99' -v OFS="" '!$5 { $5 = " NA" } 1' infile

산출:

1 id1 info
2     otherinfo
3 id2 NA
4     noinfo
5 id3 NA
6 id4 info2

답변3

이것은 sed나에게 효과적입니다.

sed -E 's/(.*id[0-9]{1,}$)/\1 NA/'

예:

sed -E 's/(.*id[0-9]{1,}$)/\1 NA/' NA.txt 
1 id1 info 
2     otherinfo
3 id2 NA
4     noinfo
5 id3 NA
6 id4 info2

NA.txt이 파일은 어디에 있습니까:

cat NA.txt 
1 id1 info 
2     otherinfo
3 id2
4     noinfo
5 id3
6 id4 info2

관련 정보