web-dev-qa-db-ja.com

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

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

ファイル1:

a
b
c

ファイル2:

1
2
3

これらを1つのcsvファイルに結合する必要があります

a;1
b;2
c;3

ファイルは非常に大きいため、2番目のファイルを処理するためにcatおよびsedを使用するのは避けたいです。 (小さいファイルの場合は、スクリプトを使用できます)。何か案が ? awk/Perl

24
Sebastian Heyn

paste コマンドを試してください:

paste -d';' File1 File2 > File3
43
Rahul
#!/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
    }
  }
}
2
Steven Penny