Замена пустой ячейки на NULL в Ubuntu - PullRequest
0 голосов
/ 27 октября 2019

Я хотел бы заменить пустую ячейку между ||с NULL. Я пытался сделать это с помощью команды sed и awk, но я не вижу никаких изменений в выходном тексте. Я сделал что-то не так в моем процессе?

awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = NULL }; 1' 311-Public-Data-Extract-2011-clean.txt

Это содержимое текстового файла:

1100265887-101000386223||Unknown|Unknown|Unknown|Unknown|Unknown|Unknown|

Вот что я хотел получить:

1100265887-101000386223|NULL|Unknown|Unknown|Unknown|Unknown|Unknown|Unknown|

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

Не могли бы вы попробовать следующее (написано на основе ваших показанных образцов).

awk '{gsub(/\|\|/,"|NULL|")} 1'  Input_file

РЕДАКТИРОВАТЬ: Согласно комментарию Эд сэр в случае, если есть более 1 пустых полей, чтобы обрабатывать этот случай.

awk 'BEGIN{FS=OFS="|"} {for(i=1;i<=NF;i++){if($i==""){$i="NULL"}}} 1' Input_file
1 голос
/ 28 октября 2019

Вот более простая команда sed. awk излишне для этой простой задачи.

sed "s/||/|NULL|/g"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...