N个单词组合,简单bash
文件1: 文件2: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
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
你期望的结果是什么?我不明白第二个和第三个请求。我建议做一个小但完整的例子我有简化的文本,太长的文本会让人困惑