Como substituir células vazias de uma coluna específica

1

Eu tenho um arquivo com muitas colunas e algumas células vazias em colunas diferentes. Eu gostaria de substituir as células vazias por NA apenas na terceira coluna. Meu arquivo:

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

Portanto, a saída deve ser:

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

Eu tentei este comando ( Substituindo o espaço em branco do valor ausente por zero ), mas substituiu todas as células vazias. Alguma sugestão?

    
por Paul 04.08.2017 / 18:25

3 respostas

1

Solução awk curta:

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

A saída:

1 id1 info 
2     otherinfo
3 id2 NA
4     noinfo
5 id3 NA
6 id4 info2
    
por 04.08.2017 / 18:46
2

Se o seu arquivo tiver colunas de largura fixa, você poderá analisá-las no GNU awk com FIELDWIDTHS , por exemplo:

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

Saída:

1 id1 info
2     otherinfo
3 id2 NA
4     noinfo
5 id3 NA
6 id4 info2
    
por 05.08.2017 / 01:39
1

Este sed funciona para mim:

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

Exemplo:

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

Onde NA.txt é este arquivo:

cat NA.txt 
1 id1 info 
2     otherinfo
3 id2
4     noinfo
5 id3
6 id4 info2
    
por 04.08.2017 / 18:41