我有两个单词列表文件;第一个包含:
John
Jerry
Jim
第二个包含:
one
two
three
每个文件都有几千行,不仅仅是上面的3个字。如何生成排列以获得以下输出?
Johnone
Johntwo
Johnthree
Jerryone
Jerrytwo
Jerrythree
..
..
..
答案1
使用awk,小心地将第二个文件作为第一的范围:
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
命令