Проверять, совпадают ли значения в определенном столбце в том же столбце для строки ниже? - PullRequest
0 голосов
/ 29 мая 2018

Я ищу команду Linux, в которой я могу сравнить, если для одного столбца строка ниже имеет то же значение, что и строка, проверяемая в данный момент, и если они затем выводят обе строки.Мой файл разделен табуляцией.

Пример ввода:

line 1  1   var281  7

line 2  1   var100  80

line 3  1   var99   85

line 4  2   var281  90

line 5  2   var281  91

line 6  2   var300  61

line 7  3   var50   45

line 8  3   var99   14

line 9  3   var99   19

line 10 3   var670  80

Желаемый вывод:

line 4  2   var281  90

line 5  2   var281  91

line 8  3   var99   14

line 9  3   var99   19

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете использовать:

sed '/^\s*$/d;s/\s[0-9][^ ]*$//g' inputfile | uniq -D -f3

Здесь sed удаляет пустые строки (^\s*$), а также последнее поле входного файла.Uniq печатает повторяющиеся строки, игнорируя первые три поля (-f3).Вывод:

line 4 2 var281
line 5 2 var281
line 8 3 var99
line 9 3 var99

Примечание последнее поле не печатается.Чтобы распечатать его, вы можете использовать grep:

grep "$(sed '/^\s*$/d;s/\s[0-9][^ ]*$//g' inputfile | uniq -D -f3)" inputfile

output:

line 4 2 var281 90
line 5 2 var281 91
line 8 3 var99 14
line 9 3 var99 19
...