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

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

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

3 Solutions collect form web for “Как заменить пустые ячейки определенного столбца”

Короткое решение 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 
  • Почему печать работает с awk, но с эхом нет?
  • grep шаблон перед другим шаблоном и распечатать все
  • Эффективная фильтрация многих файлов по их содержимому с помощью awk / sed / grep
  • Удалите первые n байтов файлов
  • Из-за пробелов между одним словом Awk изменился вывод
  • объединить файлы csv по первому столбцу
  • заменить содержимое одного поля на основе содержимого в другом поле
  • Как показать время процессора для процессов через вершину без «корневых» процессов
  • читать первый элемент в массиве
  • Как удалить первую точку перед первым номером?
  • Объединить строки по первому столбцу с помощью awk или sed
  • Interesting Posts

    Некоторые ключи (стрелки, прокрутка вверх, вниз) не работают в rdesktop-vrdp

    используйте exec -a, чтобы назвать процесс, но запустите его в фоновом режиме, невосприимчив к CTRL-C

    Скопировать файлы из списка в папку

    Как заставить AltGr + i, j, k, l работать правильно как клавиши курсора?

    Избегайте создания файла .k5login в конфигурации SFTP Chroot

    Как получить доступ к виртуальной машине KVM?

    Загрузка HP-UX из SAN

    apt upgrade: запустите новую оболочку, чтобы изучить ситуацию. Где?

    Цвета не отображаются правильно в oh-my-zsh-темах

    Случайная система Замораживает на двух разных машинах в одной комнате

    конвертировать PDF в изображение

    Как исправить «Файл» * .service «настраивает межсетевой экран IP (IPAddressDeny = любой), но локальная система не поддерживает межсетевой экран на основе BPF / cgroup»?

    некорневой доступ к физическим блокам, занятым файлом

    Как создать полный макет xkb и заставить его работать?

    Насыщенное синее изображение в потоке MJPG с малиной Pi и веб-камерой

    Linux и Unix - лучшая ОС в мире.