Как заменить пустые ячейки определенного столбца

У меня есть файл со многими столбцами и несколько пустых ячеек в разных столбцах. Я хотел бы заменить пустые ячейки для 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 

Я попробовал эту команду ( Заменив пустое значение пустым пространством на ноль ), но заменил все пустые ячейки. Какие-либо предложения?

Короткое решение awk :

 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 

Если ваш файл имеет столбцы фиксированной ширины, вы можете проанализировать их в 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 

Это 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