Как выбрать строки, в которых столбцы два и три не равны друг другу, а 0 или 1? (С помощью awk) - PullRequest
1 голос
/ 28 марта 2012

У меня есть такой файл:

AX-75448119 0 1
AX-75448118 0.45 0.487179
AX-75474642 0 0
AX-75474643 0.25 0.820513
AX-75448113 1 0
AX-75474641 1 1

и я хочу выбрать строки, чтобы столбцы 2 и 3 не были равны друг другу и 0 или 1 (обе)! (т.е. если столбцы 2 и 3 похожи, но равны 0,5 (или любому другому числу, кроме 0 и 1), я хотел бы иметь эту строку) поэтому вывод будет:

AX-75448119 0 1
AX-75448118 0.45 0.487179
AX-75474643 0.25 0.820513
AX-75448113 1 0

Я знаю, как написать команду для выбора строк, чтобы столбцы 2 и 3 были равны друг другу и равны 0 или 1, а именно:

awk '$2=$3==1 || $2=$3==0' test.txt | wc -l

но я хочу с точностью до наоборот выбрать все строки, которые не являются выводом вышеуказанной команды! Спасибо, надеюсь, я смог объяснить, что я хочу

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Может сработать, если я правильно выполню ваши требования.

awk ' $2 != $3 { print; next } $2 == $3 && $2 != 0 && $2 != 1 { print }' INPUTFILE

Смотрите в действии на Ideone.com

1 голос
/ 28 марта 2012

Это может сработать для вас: (?)

awk '($2==0 || $2==1) && ($3==0 || $3==1) && $2==$3{next}1' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...