文字が511文字を超えると、2つのファイルを列ごとにリンクするときに貼り付けコマンドが機能しないのはなぜですか?

文字が511文字を超えると、2つのファイルを列ごとにリンクするときに貼り付けコマンドが機能しないのはなぜですか?

貼り付けコマンドを使用して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.csvfile2.csv(nawkマッチホール行、最初の列、2番目の列...)で行を保存し、変数から行を保存します。次に(ファイル1の行)を印刷し、「、」を印刷してから(ファイル2の行)を印刷します。file1.csv$0$0$1$2file2.csva$0afile3.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

関連情報