N个单词组合,简单bash

N个单词组合,简单bash,bash,text,combinations,text-processing,Bash,Text,Combinations,Text Processing,文件1: 文件2: 1F 2F 3F 4F 5f 我有一个生成所有可能组合的简单代码 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

文件1:

文件2:

1F
2F
3F
4F
5f
我有一个生成所有可能组合的简单代码

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
但我想:

1) 完全避免重复

2) “选择数字”(他将从第二个文件中提取的字(行)数):

第二个文件中的每两行:

1F:1F
1F:2F
1F:3F
1F:4F
2F:1F
etc
1F:2F
1F:3F
2F:3F
2F:4F
3F:4F
3F:5F
4F:5F
第二个文件中的每三行:

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

和etc

如果可以对文件进行排序(并排除重复行),则可以:

 1F:2F
 1F:3F
 1F:4F
 2F:3F
 2F:4F
 2F:5F
etc..
它使用bash扩展生成组合,如:

printf "%s\n" $(eval "echo {$(sort -u file.txt | paste -sd, -)}:{$(sort -u file2.txt | head -2 | paste -sd, -)}") | sort -u
此外,您必须绝对信任文件的内容,因为代码使用了危险的
eval

head-2
类似的
head-2
的参数可用于限制
file2.txt

代码生成(通过将第二个文件限制为2个已排序的行)以下内容:

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

你期望的结果是什么?我不明白第二个和第三个请求。我建议做一个小但完整的例子我有简化的文本,太长的文本会让人困惑