Cygwinでcsvファイルを水平にマージするのに問題があります。

Cygwinでcsvファイルを水平にマージするのに問題があります。

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

おすすめ記事