![catまたはsedを使用せずに2つのテキストファイルを1つにマージする方法](https://linux33.com/image/88048/cat%E3%81%BE%E3%81%9F%E3%81%AFsed%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%9B%E3%81%9A%E3%81%AB2%E3%81%A4%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%921%E3%81%A4%E3%81%AB%E3%83%9E%E3%83%BC%E3%82%B8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
ファイルが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
}
}
}