为什么粘贴命令要添加换行符?

为什么粘贴命令要添加换行符?

我有2个文件:dt。我希望能够合并这些文件,以便文件 t 的第一行后面跟着一个制表符,然后是 d 的第一行。对于较短的线路,paste t d似乎效果很好。

$ cat d t
Highly reactive metals in group 1A of the periodic table.
Fairly reactive metals in group 2A of the periodic table.
alkali metals
alkaline earth metals
$ paste d t
Highly reactive metals in group 1A of the periodic table.   alkali metals
Fairly reactive metals in group 2A of the periodic table.   alkaline earth metals
$ paste t d
alkali mHighly reactive metals in group 1A of the periodic table.
alkalineFairly reactive metals in group 2A of the periodic table.

尝试粘贴完整的句子似乎表现得很奇怪。如上所示,术语被缩减为前 8 个字符。

$ paste t d > temp
$ gedit temp &
$ vim temp

打开 gedit 会显示每个术语后面的换行符。 Vim 显示了这个:

alkali metals^M Highly reactive metals in group 1A of the periodic table.
alkaline earth metals^M Fairly reactive metals in group 2A of the periodic table.

嗯,这似乎很容易解决。:%s/^V^M//g删除所有回车符,一切都正确显示。但这些回车符最初是如何出现的呢?

虽然我的问题确实涉及来自 Windows 的文本文件中的回车符,这使得事情在类 Unix 环境中表现得很奇怪,但它并不重复这个问题。问题相似,但表现却截然不同。我花了大约一个小时才弄清楚回车符甚至是罪魁祸首,因为我无法通过网络搜索找到足够类似问题的实例。这就是为什么我在自己解决了这个问题后发布了这个。

答案1

作为 t 源的文件是在 Windows 8 上使用记事本创建的,并由 Ubuntu 13.04 复制到我的主目录中。 d 的源代码是在 Ubuntu 上的 gedit 中创建的。因此,回车符一直在文件中。似乎在不同操作系统之间来回移动文件经常会导致类似的问题。

换行差异

转换行结尾

相关内容