сравнить несколько столбцов в одном файле и вывести разницу - PullRequest
0 голосов
/ 30 сентября 2019

У меня большой файл, и я хочу сравнить несколько столбцов.

Пробная версия Входной набор данных :

enter image description here

Я хочу сравнить столбец 6 со столбцом 8 и столбец 7 со столбцом 9 и хочу удалить соответствующие строки. пробная команда:

awk '($6 != $8)&&($7 != $9){print $0}' input > output

Не работает для печати разницы, однако она работает, если я хочу напечатать match (awk '($ 6 == $ 8) && ($ 7 == $ 9) {print $ 0}'input> output)

Таким образом, желаемый результат должен быть:

desired output1

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019
a == b && c == d

Отрицание:

! (a == b && c == d)
a != b || c != d

Вы должны узнать о законах Де Моргана .

awk '$6 != $8 || $7 != $9 {print $0}'

или просто:

awk '!( $6 == $8 && $7 == $9 ){print $0}'
1 голос
/ 30 сентября 2019

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

awk '($6 == $8){if($7 == $9){next}} 1' input > output

ИЛИ согласно комментарию Эда сэра чуть более неуклюже:

awk '$6==$8 && $7==$9{next} 1' Input_file > output

...