2つのCSVファイルがあります。
test1.csv
1
2
3
4
test2.csv
6
7
8
9
これら2つのファイルを水平にマージしたいです。これを行うには、「paste -d , test1.csv test2.csv > paste.csv
このファイルをメモ帳で開くと正しく表示されます」を使用します。
paste.csv
1,6
2,7
3,8
4,9
ただし、ExcelでPaste.csvをロードすると、次のようになります。
私は何を見逃していますか?よろしくお願いします!
PSこれは重要ではないかもしれませんが、私はWindowsでCygwinを使用しています。
更新:メモ帳でPaste.csvを開いたときに奇妙なことが見つかりました。数字とカンマの間に見えない文字があるようです。たとえば、1 の間にカーソルを置いてバックスペースを押すと、何も起こりません。バックスペースをもう一度押すと、期待どおりに1が削除されます。見えないすべての文字を削除してから、ExcelからPaste.csvを読み込むと正しいです!
ベストアンサー1
Unix代表改行文字LF文字を使用する(新しい行= \n
= ^J
= 10進数10 = 8進数012 = 16進数0x0a)。 Windowsでは、2つの文字シーケンスCRとLFを使用して、改行文字(CR =キャリッジリターン= \r
= ^M
= 10進数13 = 8進数015 = 16進数0x0d)を表します。 WindowsテキストファイルがUnixユーティリティによって処理されると、各行は偽のCR文字で終わります。
CygwinユーティリティはLinuxツールの直接ポートです。 Windowsのテキストファイルは特に処理されないため、CR文字は行の内容で終わります。貼り付けたファイルには、各コンマの前にCRがあります。
まず、ファイルをUnix形式に変換できます。
dos2unix *.csv
paste -d , test1.csv test2.csv > paste.csv
または、CR文字のみを削除することもできます。ここでは、その項目を行から削除します。他のテキスト操作では、処理する前に削除する必要があります。
paste -d , test1.csv test2.csv | tr -d '\r' > paste.csv