나는 1 2 3 5 6 11 18
이라고 가정하고 grep
을 사용하여 파일에서 몇 자릿수를 추출했습니다. 누락 된 파일을 1..20
에 가져 오려면 파일에 넣고 comm
을 사용하여 비교하십시오.시퀀스에서 누락 된 자릿수를 추출합니다.
1
10
11
12
13
14
15
16
17
18
19
2
20
3
4
5
6
7
8
9
를 출력
a='1 2 3 5 6 11 18'
printf '%d\n' $a | sort -u > 111
printf '%d\n' {1..20} | sort -u > 222
comm 111 222
rm 111 222
파일에 저장하지 않고 더 편리한 방법이 있나요?
[처리 대체] (http://mywiki.wooledge.org/ProcessSubstitution) :'comm <(printf '% d \ n'$ a | sort -u) <(printf '% d \ n'{1 ..20})'참고 : 두 번째 경우'{1..20}'에 대해서는 정렬 할 필요가 없습니다. 그들은 이미 분류되어 있습니다. – anishsane
^^ 그렇게 말하면서, 순수한 bash 변종을 쉽게 작성할 수 있습니다 :'a = '1 2 3 5 6 11 18'; $ a에서 x에 대해; do [$ x] = 1; 끝난; for ((x = 1; x <= 20; x ++)); do ((t [i])) || echo $ i; done' – anishsane
감사합니다. @anishsane. 그러나 두 번째 것은 널 라인을 출력합니다. 첫 번째 것은'정렬 '이 필요합니다. '1 2 3 4 ... 10 ... 20'은 정렬 된 것으로 간주되지 않지만 '1 10 11 ... 2 20 3 ...'은 정렬됩니다. – Lee