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

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

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

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

1 ответ1

0

Допустим, у вас есть этот файл с именем, например, 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 . Конечно, я понятия не имею, будет ли это иметь смысл в вашей ситуации, так как это зависит от того, какой тип повреждения данных произошел.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .