Shell

為什麼粘貼命令會截斷輸入文件之一?

  • May 17, 2022

我有兩個文件,每個文件只包含一列數字數據,並且行數相同。使用時paste,它確實將兩個文件中的行合併為一行,但第一個文件的文本被截斷,而第二個文件的文本完好無損:

$ 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

應該沒有限制。只是至少您的第一個輸入文件具有 DOS/Windows 樣式的 CRLF 行結尾,其中輸入符 (CR) 在分隔 TAB 和列印下一個值之前將游標位置返回到行首。請注意第二個文件中的值是如何從第一個製表位的位置 8 開始的。

實際輸出是這樣的:

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

如果您使用 eg 查看輸出,則可以對其進行驗證od -c,它應該\r在此處顯示 CR。

執行文件或輸出tr -d '\r'以刪除 CR。(或dos2unix任何其他各種方式。)

引用自:https://unix.stackexchange.com/questions/702913