既存のファイルから単語リスト置換を生成する

既存のファイルから単語リスト置換を生成する

2つの単語リストファイルがあります。最初のファイルには以下が含まれます。

John
Jerry
Jim

2番目には次のものがあります。

one
two
three

各ファイルには上記の3つの単語だけでなく、何千もの行があります。次の出力を得るために順列をどのように生成できますか?

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

答え1

使用、2番目のファイルを次のように慎重に配置します。最初範囲:

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

これは、file2のすべての内容をarrayに保存し、afile1を(暗黙的に)繰り返し、ループ内の各要素に対してafile1の現在の行を印刷し、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

関連情報