貼り付けコマンドが入力ファイルの1つを切り捨てるのはなぜですか?

貼り付けコマンドが入力ファイルの1つを切り捨てるのはなぜですか?

2つのファイルがあり、各ファイルには1つの数値データ列しか含まれておらず、行数は同じです。を使用すると、paste2つのファイルの行が1つにマージされますが、最初のファイルのテキストは切り捨てられ、2番目のファイルのテキストは変更されません。

$ head -3 s1_.dat s2_.dat
==> s1_.dat <==
-0.023193359375
-0.020416259766
0.014587402344

==> s2_.dat <==
-0.018707275391
-0.019805908203
0.011108398438

$ paste s1_.dat s2_.dat | head -3
-0.02319-0.018707275391
-0.02041-0.019805908203
0.0145870.011108398438

に列幅制限がありますかpaste

答え1

制限はありません。少なくとも最初の入力ファイルには、DOS / WindowsスタイルのCRLF行末があります。ここで、キャリッジリターン(CR)は、区切りTABと次の値を印刷する前にカーソル位置を行の先頭に返します。 2番目のファイルの値が最初のタブ停止位置8でどのように始まるかを確認してください。

実際の出力は次のとおりです。

-0.023193359375<CR><TAB>-0.018707275391<NL>

たとえば、出力を表示するために使用している場合はこれを確認でき、そこにCRがod -c表示されます。\r

CRを削除するには、ファイルまたは出力を実行しますtr -d '\r'。 (またはdos2unix他のさまざまな方法。)

関連情報