我有两个文件(我将file1 / 2.csv重命名为file1 / 2.txt):
file1 file2
----- ------
a 1
b 2
...
当我使用paste -d "," file1.txt file2.txt > file3.txt
时。 file3.txt的内容是:
a
,1
b
,2
我想知道为什么它没有生成如下内容:
a,1
b,2
答案 0 :(得分:2)
原因是file1
有\r\n
行结尾,您可以在xxd
转储中看到:
312030203020302030203020302030200d0a312031203120312030203020...
^^^^
here
你知道这是一行,因为\r == 13 == 0x0d
和\n == 10 == 0x0a
。
所以似乎paste
命令在行结束之前不知道\r
,所以它让它在file1
的每一行的末尾,但当你看在file3
的内容中,您使用的程序会将\r
解释为行尾。
要解决此问题,您可以将行结尾转换为\n
,如下所示:
cat file1 | tr -d '\r' > file1-output
或者如果你有dos2unix
程序:
dos2unix file1