从现有文件生成单词列表排列

从现有文件生成单词列表排列

我有两个单词列表文件;第一个包含:

John
Jerry
Jim

第二个包含:

one
two
three

每个文件都有几千行,不仅仅是上面的3个字。如何生成排列以获得以下输出?

Johnone
Johntwo
Johnthree
Jerryone
Jerrytwo
Jerrythree
..
..
..

答案1

使用,小心地将第二个文件作为第一的范围:

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

这会将 file2 的所有内容保存到一个数组中a,然后循环遍历 file1 (隐式)并循环遍历 的每个元素a,打印 file1 的当前行,然后打印 file2 中保存的行。不保证顺序,但它仍然是有效的排列。

示例运行:

$ 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

答案2

for w1 in $(cat file1)
do 
  for w2 in $(cat file2)
  do
    word=${w1}${w2}
    echo ${word} >> permutationfile
  done
done

对于不同的格式选项,您可以使用printf而不是echo命令

相关内容