숫자 목록 중에서 빠진 숫자 찾기?

lacovnk의 이미지

1
3
4
7
8

list라는 파일에 이렇게 있을 때, 1부터 9까지 중에서 2,5,9가 빠졌다고 알려주는 "스크립트"를 짜고 싶습니다.

...가능할까요?

일단 이렇게 해결해봤습니다

seq 1 9 > list2
diff list list2 | grep ">" | awk '{print $2}'

음.. diff에 seq 스트림을 넘겨주면 될 것 같은데, 잘 안되는군요 -o-..... 더 간단한 방법이 있을까요?

Prentice의 이미지

seq 9 | diff list - | grep ">" | sed 's/> //'

cppig1995의 이미지

흥미롭군요.
만약 외부 풀그림을 쓰지 않고 이것을 돌린다면, 삽질적 방법밖에 없군요;;;
만약 없는 숫자가 1개밖에 없다면 합(45)에서 빼가면 되겠군요.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

임창진의 이미지

@set{i;0}
\L<D>=@cmpn{@sub{$1;$i};1;;;@repeat{@sub{$1;@add{$i;1}};@incr{i}[$i]\n}}@set{i;$1}

awk 로는

BEGIN {
  a = 0
}
 
{
  if($1-a > 1) {
         for(i=1; i < $1-a ; i++) {
                a++;
                print a ;
        }
  }
  #print $1
  a = $1;
}