貼り付けコマンドを使用して2つをリンクしています。.csvファイルは列でソートされます。どちらのファイルも巨大なファイルで、実行すると生地コマンドは次のとおりです。ここで、カンマ(、)は区切り文字です。
paste -d',' file1.csv file2.csv > file3.csv
コマンドは出力を提供できません。
paste: line too long
ところで、コマンドの貼り付けに関するマニュアルとインターネットで同じ内容を閲覧したりしました。次の診断が見つかりました。
"line too long" Output lines are restricted to 511
characters.
では、結果を得る他の方法はありませんか?
私は次のバージョンのbashを使用しています。
GNU bash, version 3.2.57(1)-release (sparc-sun-solaris2.10)
答え1
このコマンドを試してください。
nawk '{if ((getline a < "-") > 0) $0 = $0 "," a; print}' file1.csv < file2.csv > file3.csv
このコマンドは合計を1行ずつ確認file1.csv
しfile2.csv
(nawkマッチホール行、最初の列、2番目の列...)で行を保存し、変数から行を保存します。次に(ファイル1の行)を印刷し、「、」を印刷してから(ファイル2の行)を印刷します。file1.csv
$0
$0
$1
$2
file2.csv
a
$0
a
file3.csv
答え2
ファイルを新しいファイルハンドルにリダイレクトし、入力から読み取ったときに読み込みます。
#! /bin/bash
exec 3< file1
while read -r two ; do
read -r -u3 one
echo "$one,$two"
done < file2
答え3
問題は、Solarisが提供するツールがGNUツールほど良くないことです。可能であればインストールする必要があります。そうでなければ、おそらくより良いpaste
ものがあるでしょうxpg4
。