2017-02-10 11 views
0

파일 1 :N 조합, 간단한 bash는

1F 
2F 
3F 
4F 
5f 

파일 2 :

1F 
2F 
3F 
4F 
5f 

나는 모든 가능한 조합이의

#!/bin/bash 
    for a in $(awk '{print $1}' intf1) 
    do 
     for b in $(awk '{print $1}' intf2) 
     do 
      echo -e "$a:$b" >> file 
     done 
    done 

출력을 생성하는 간단한 코드를 코드 :

1F:1F 
1F:2F 
1F:3F 
1F:4F 
2F:1F 
etc 

하지만 내가하고 싶은 :

1) 완전히 반복

을 피하기

2) (단어의 수 그가 두 번째 파일에서 가져온 것 (선)) "번호 선택"

를 제 파일

각각 두 라인 : 제 파일

1F:2F 
1F:3F 
2F:3F 
2F:4F 
3F:4F 
3F:5F 
4F:5F 

각 산신 :

1F:2F 
1F:3F 
1F:4F 
2F:3F 
2F:4F 
2F:5F 
etc.. 
01,235,164 파일 정렬 (및 반복 라인을 제외) 할 수 있다면

+0

원하는 결과는 무엇입니까? 나는 요청 # 2와 # 3을 이해하지 못한다. 나는 작지만 완전한 예를 제시 할 것을 제안한다. – NinjaGaiden

+0

나는 단순화 된 텍스트를, 너무 긴 텍스트는 사람들을 혼란시킨다. – Jonh

답변

0

,이 일할 수 :

$ echo {a,b}{X,Y,Z} 
aX aY aZ bX bY bZ 
:

printf "%s\n" $(eval "echo {$(sort -u file.txt | paste -sd, -)}:{$(sort -u file2.txt | head -2 | paste -sd, -)}") | sort -u 

그것은 같은 조합을 생성하기 위해 bash는 확장을 사용 코드가 위험한 eval을 사용하기 때문에

또한 파일의 내용을 절대적으로 신뢰해야합니다.

head -2 같은 head의 인수는 다음 (2 개 이미 정렬 라인에 두 번째 파일을 제한하여) 코드는 생산 file2.txt

에서 라인의 cound 제한에 사용될 수

:

20160702F:20160702F 
20160702F:20160714F 
20160714F:20160702F 
20160714F:20160714F 
20160807F:20160702F 
20160807F:20160714F 
20160819F:20160702F 
20160819F:20160714F 
20160831F:20160702F 
20160831F:20160714F 
20160912F:20160702F 
20160912F:20160714F