열이 많고 다른 열에 빈 셀이 있는 파일이 있습니다. 세 번째 열에서만 빈 셀을 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