Я думаю, вы пытаетесь напечатать только те строки, в которых значение во 2-м столбце изменилось по сравнению с предыдущей строкой.Это может быть не то, что вам нужно, хотя, пожалуйста, включите пример правильного вывода в ваш вопрос.
Вы можете использовать переменную awk (в данном случае p
) и установить для нее значение$2
как последнее, что вы делаете при обработке строки.
Первый шаблон p != $2 { print }
означает, что мы проверяем, равно ли 2-е поле текущей строки p
, что является значением изпредыдущая строка.
awk 'p != $2 { print } { p = $2 }' /tmp/data.txt
Т.е. с учетом следующего (содержимое /tmp/data.txt
)
0 20.00GB
1 20.00GB
2 20.00GB
3 20.00GB
8 21.00GB
9 21.00GB
10 21.00GB
11 21.00GB
16 22.00GB
17 22.00GB
18 22.00GB
19 22.00GB
24 23.00GB
25 23.00GB
26 23.00GB
27 23.00GB
0 44.00GB
Я предполагаю, что вы хотите произвести
0 20.00GB
8 21.00GB
16 22.00GB
24 23.00GB
0 44.00GB