나는 다음과 같은 목록을 만들고 싶습니다.
7785237_770x770_de3b540dc13ed50023d17854513b40aa07e50a6a
732308_770x770_ec5c344c0114011a5306b31142ff9b001813f6d6
7430796_800x800_ec0f2e614e2dc460fca7e626d83073c827dc9130
7431018_800x800_7caa40b85c21485c64f2ad509a0d9cc1ed3ba526
설명하자면: 첫 번째 "_" 앞의 첫 번째 블록은 0에서 9500000 사이의 숫자입니다. 두 번째 블록은 "770x770"과 "800x800"이라는 두 변수 사이에서 다양하며
마지막 블록은 40자의 긴 16진수 블록입니다.
그래서 제가 하고 싶은 것은 이들의 가능한 모든 조합을 생성하고 이를 한 줄로 결합하는 것입니다.
어떻게 해야 하나요? BASH에서 이 작업을 수행할 수 있는지 아니면 Perl/유사 프로그램에서 수행해야 하는지 확실하지 않습니다.
답변1
나는 그것이 작동하기 전에 당신이 늙어가는 경우를 대비하여 bash가 이러한 양을 처리할 수 없다고 생각합니다.
파이썬반복 도구모든 조합을 만들고 조립하는 데 도움이 될 수 있습니다.
Perl보다는 Python을 사용하는 것이 좋습니다. 왜냐하면 이것은 텍스트 조작 작업보다 수학적 작업에 더 가깝기 때문입니다.
#!/usr/bin/env python
from itertools import combinations_with_replacement
for x in combinations_with_replacement('0123456789abcdef', 40):
h = ''.join(x)
for y in xrange(9500001):
for r in ("770x770", "800x800"):
print "{0}_{1}_{2}".format(y, r, h)
물론 Python은 C보다 속도가 훨씬 느리기 때문에 최고의 성능을 기대하지는 마세요. 반면에 단 5줄의 코드만으로 C에서 동일한 결과를 얻을 수 있다고 기대하지 마십시오.