粘贴的奇怪行为

粘贴的奇怪行为

我遇到粘贴工具的一些奇怪行为。由于某种原因,它似乎无法在两个特定文件上完成它的工作,但我无法用其他文件重现该行为。

第一个文件:

$ cat file1
20.623 40.276 -1.999 -1031 127 141 154
20.362 40.375 -2.239 -941 130 141 159
20.36 40.376 -2.402 -1083 139 151 165
20.374 40.367 -2.405 -1122 131 147 163
20.372 40.366 -2.405 -1165 132 145 161
20.375 40.364 -2.404 -1036 133 149 165
20.358 40.371 -2.405 -1137 139 151 165
20.359 40.374 -2.404 -1086 139 151 165
20.354 40.375 -2.404 -1106 139 148 163
20.356 40.374 -2.404 -1059 139 151 165

第二个文件:

$ cat file2
-1
-1
2
-1
-1
-1
-1
2
2
2

现在,粘贴执行了我期望它在以下调用后执行的操作:

$ paste file2 file1
-1  20.623 40.276 -1.999 -1031 127 141 154
-1  20.362 40.375 -2.239 -941 130 141 159
2   20.36 40.376 -2.402 -1083 139 151 165
-1  20.374 40.367 -2.405 -1122 131 147 163
-1  20.372 40.366 -2.405 -1165 132 145 161
-1  20.375 40.364 -2.404 -1036 133 149 165
-1  20.358 40.371 -2.405 -1137 139 151 165
2   20.359 40.374 -2.404 -1086 139 151 165
2   20.354 40.375 -2.404 -1106 139 148 163
2   20.356 40.374 -2.404 -1059 139 151 165

然而,当切换参数时,生成的行是通过某种方式合并行而不是连接它们来创建的:

$ paste file1 file2
20.623 4-1276 -1.999 -1031 127 141 154
20.362 4-1375 -2.239 -941 130 141 159
20.36 402376 -2.402 -1083 139 151 165
20.374 4-1367 -2.405 -1122 131 147 163
20.372 4-1366 -2.405 -1165 132 145 161
20.375 4-1364 -2.404 -1036 133 149 165
20.358 4-1371 -2.405 -1137 139 151 165
20.359 42.374 -2.404 -1086 139 151 165
20.354 42.375 -2.404 -1106 139 148 163
20.356 42.374 -2.404 -1059 139 151 165

请注意,第二个数字是混乱的。我发现更奇怪的是,粘贴的效果符合我的预期:

$ cat test1
5 5 5 5
6 6 6 6
$ cat test2
-2
-7
$ paste test2 test1
-2  5 5 5 5
-7  6 6 6 6
$ paste test1 test2
5 5 5 5 -2
6 6 6 6 -7

手册页无法帮助我解决问题。对我试图完成的任务有什么解释和帮助吗?

答案1

确实是 Windows 换行符导致了这种行为。运行后

sed $'s/\r//' -i file1

为了替换它们,粘贴按预期工作。感谢 Steeldriver 为我指明了正确的方向。另一种解决方案是使用

dos2unix file1 

相关内容