catまたはsedを使用せずに2つのテキストファイルを1つにマージする方法

catまたはsedを使用せずに2つのテキストファイルを1つにマージする方法

ファイルが2つあります。

ファイル1:

a
b
c

ファイル2:

1
2
3

これでcsvファイルにマージする必要があります。

a;1
b;2
c;3

ファイルは本当に大きいので、2番目のファイルを使用してcat処理しないことをお勧めします。sed(小さいファイルの場合はスクリプトを使用できます)。どんなアイデアがありますか?awk/ perl

答え1

努力するpaste注文する:

paste -d';' File1 File2 > File3

答え2

#!/usr/bin/awk -f
{
  w[FNR][FILENAME] = $0
}
END {
  for (x in w)
    print w[x][ARGV[1]] ";" w[x][ARGV[2]]
}

私もこれを思い出しましたが、Awkが配列を繰り返す方法で失敗しました。

#!/usr/bin/awk -f
{
  w[FNR][FILENAME] = $0
}
END {
  for (x in w) {
    y = 0
    for (z in w[x]) {
      printf w[x][z]
      printf y ? "\n" : ";"
      y = 1
    }
  }
}

関連情報