Awk - или в состоянии и

Как заставить AWK печатать каждую строку, в которой столбец 10 больше 0,9, если 11-й столбец не равен 1 или -1? Я пробовал разные варианты, но это не работает. Спасибо!

awk '{ if ($10>0.9 && ( $11!=1 || $11!=-1 ) ) print }' file.txt

Добро пожаловать в SO, не могли бы вы добавить образцы ввода и вывода в свой пост в CODE TAGS?

RavinderSingh13 31.10.2018 14:04

Вы путаете ИЛИ и И. Вы хотите «Столбец 11 не равен -1 И не равен 1». Вы можете сделать: awk '$10>.0.9 && $11!=1 && $11!=-1' file.txt

JNevill 31.10.2018 14:05
0
2
200
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите получить вывод, в котором 10-е поле больше, чем 0.9, а 11-й столбец НЕ равен 1 или -1, выполните следующие действия.

awk '($10>0.9) && ($11 != 1 || $11 != -1)'  Input_file

Если вы хотите получить вывод, в котором 10-е поле больше, чем 0.9, а 11-й столбец НЕ равен как 1, так и -1.

awk '($10>0.9 && $11 != 1 && $11 != -1)'  Input_file

Обновлено: В соответствии с решением ED, сэр, добавив сюда также следующее.

awk '($10 > 0.9) && ($11^2 != 1)' Input_file
$11 != 1 || $11 != -1 всегда правда. Поскольку поле не может быть одновременно равно 1 и -1, всегда выполняется одно из условий
karakfa 31.10.2018 19:50

Другие вопросы по теме