Gerando permutações de lista de palavras a partir de arquivos existentes

1

Eu tenho dois arquivos de lista de palavras; o primeiro contém:

John
Jerry
Jim

o segundo contém:

one
two
three

Os arquivos são vários milhares de linhas cada, não apenas as 3 palavras acima. Como posso gerar permutações para obter a seguinte saída?

Johnone
Johntwo
Johnthree
Jerryone
Jerrytwo
Jerrythree
..
..
..
    
por Harris 24.05.2016 / 20:02

2 respostas

2

Usando , tomando cuidado para passar o segundo arquivo como o < em> primeiro parâmetro:

awk '(NR==FNR) { a[NR]=$0 } (NR != FNR) { for (i in a) { print $0 a[i] } }' file2 file1

Isso salva todo o arquivo2 em uma matriz a , faz um loop no arquivo1 (implicitamente) e percorre todos os elementos de a , imprimindo a linha atual do arquivo1 seguida pela linha salva do arquivo2. A encomenda não é garantida, mas ainda é uma permutação válida.

Execução da amostra:

$ cat file1
John
Jerry
Jim
Jeff

$ cat file2
one
two
three
four

$ awk '(NR==FNR) { a[NR]=$0 }  (NR != FNR) { for (i in a) { print $0 a[i] } }' file2 file1
Johnfour
Johnone
Johntwo
Johnthree
Jerryfour
Jerryone
Jerrytwo
Jerrythree
Jimfour
Jimone
Jimtwo
Jimthree
Jefffour
Jeffone
Jefftwo
Jeffthree
    
por 24.05.2016 / 20:34
2
for w1 in $(cat file1)
do 
  for w2 in $(cat file2)
  do
    word=${w1}${w2}
    echo ${word} >> permutationfile
  done
done

para diferentes opções de formatação, você pode jogar com printf em vez do comando echo

    
por 24.05.2016 / 20:11