bash를 사용한 정렬 - 5/8

bash를 사용한 정렬 - 5/8

A B C D E내가 값 과 8개의 장소를 가지고 있다고 가정해 봅시다 1 2 3 4 5 6 7 8. 두 번, 세 번 반복하여 가능한 모든 조합을 인쇄하는 방법은 무엇입니까?

예:

1 2 3 4 5 6 7 8
_______________
A A B B C C D E
A B B C C D D E (and so on...)
A A A B B C D E
A B B B C C D E (and so on...)

어떤 조합이 어떤 조합인지는 중요하지 않습니다. 누락된 값이 없어야 합니다.AABBCCDD (무엇이 E빠졌는지)

답변1

zsh//를 사용하는 ksh93대략적인 방법은 bash다음과 같습니다:

printf '%s\n' {A..E}{A..E}{A..E}{A..E}{A..E}{A..E}{A..E}{A..E} |
  sed '/A/!d; /B/!d; /C/!d; /D/!d; /E/!d; /\(.\)\(.*\1\)\{3\}/d'

그중에서 우리는 zsh 스타일을 사용하여 {A..E}에서 까지 5 8개의 조합을 모두 생성 하고 동일한 문자를 포함하지 않거나 포함하지 않거나 3개 이상의 조합을 삭제합니다.AAAAAAAAEEEEEEEEsedABCDE

문자 사이에 공백을 삽입하려면 코드 에 ;s/./ &/2g(GNU sed) 또는 ;s/./ &/g;s/ //(any sed)를 추가하세요 .sed

관련 정보