Вопрос: Как изменить три столбца только на один из них, имеющих 0, остальные 1?


Допустим, у меня есть испорченная таблица данных, например:

Name     IsBuyer IsBidder IsAdmin
person1  1       1        0
person2  1       0        1
person3  1       1        1
.
.

Три столбца IsBuyer, IsBidder, IsAdmin могут быть истинными или ложными. Но только один из столбцов может быть правдой.

Как написать скрипт с помощью sed, awk или другого инструмента, основанного на UNIX / Linux, для изменения таблицы?


0
2017-07-05 09:00


Источник


Как узнать, какой столбец должен быть установлен в 1? - xenoid
Ну, это не имеет большого значения. Важная часть состоит в том, что только один столбец может быть правдой. В моей заявке пользователь может быть только покупателем, участником торгов или администратором. - Cobol Tikal
Можете ли вы добавить дополнительную информацию о том, удалось ли решить эту проблему и как или предоставить дополнительную информацию, если вы все еще застряли? - simlev


Ответы:


Предположим, у вас есть этот файл с именем, например. users.txt и вы просто хотите исправить это, чтобы ваше приложение запустилось и позволило вам изучить и разработать ситуацию; вы могли бы просто установить IsBuyer в 1 а также IsBidder а также IsAdmin в 0,

Выберите свой аромат между awk а также perl:

awk 'NR==1; /person/ && $2+$3+$4>1 {print $1 " 1 0 0"}' users.txt

perl -lape 'if (/person/ && $F[1]+$F[2]+$F[3]>1) {$_="$F[0] 1 0 0"}' users.txt

Несколько более сложный подход состоял бы в том, чтобы установить IsBuyer в 1 если было обнаружено, что 1 то есть значения флип для 0 но никогда не переворачивать значения в 1, Конечно, я понятия не имею, будет ли это иметь смысл в вашей ситуации, поскольку это зависит от того, какое повреждение данных произошло.


0
2017-07-11 14:45