найти разрыв в данных с помощью awk

#bash #sed #awk

#bash #sed #awk

Вопрос:

Используя awk, как определить разрыв в последовательности данных. У меня есть данные, подобные приведенным ниже.

Пример: Входные данные:

 shotline   shot
1001       1001
1001       1002
1001       1003
1001       1005
1001       1006
1001       1009
1002       1001
1002       1003
  

Данные должны быть:

Отсутствующие точки данных:

 1001     1004
1001     1007
1001     1008
1002     1002
  

Комментарии:

1. Не могли бы вы описать, как определяется разрыв в этом случае? Что такое shotline и shot? Являются ли числа парными?

Ответ №1:

Вот рабочее решение:

 cat data | awk '{shotline = $1; if(shotline != last_shotline){last_shotline = shotline; last_shot = 1000;} shot = $2; while(shot != last_shot 1){ last_shot = last_shot 1; print shotline " " last_shot }; last_shot = shot;}'