连接两个文件而不添加换行符

连接两个文件而不添加换行符

如果我有nano两个文件,其中一个在我不输入换行符的情况下读取“this”,而其中一个在我不输入换行符的情况下读取“is”,我希望能够将这cat两个文件一起组合成“thisis”之类的文件。

相反,换行符会自动插入。

alec@ROOROO:~/$ cat test1 test2 > test3
alec@ROOROO:~/$ cat test3
this
is

那么,如何在不添加换行符的情况下连接两个文件呢?

答案1

那些尾随换行符是由 添加的nano,而不是由cat

使用nano-L参数:

-L (--nonewlines)
    Don't add newlines to the ends of files.

或者~/.nanorc的nonewlines命令:

set/unset nonewlines
    Don't add newlines to the ends of files.

答案2

cat不添加换行符。换行符已经存在于 的末尾test1。这是正常的:文本文件由一系列行组成,而一行由一系列可打印字符和后跟换行符组成。因此,所有非空文本文件都以换行符结尾。

如果您有两个文本文件,并且想要将它们连接在一起,请使用cat.您将获得第一个文件的行,然后是第二个文件的行。

如果你想做一些更复杂的事情,即将第一个文件的最后一行与第二个文件的第一行连接起来,你需要一个更复杂的命令。例如,您可以删除第一个文件的最后一个字符,然后追加第二个文件。使用 GNU coreutils(即在非嵌入式 Linux 上),您可以执行以下操作:

{ <test1 head -c -1 && cat test2; } >test3

或者分两步:

<test1 head -c 1 >test3 && <test2 cat >>test3

答案3

如果发生这种情况,那么您肯定自己插入了换行符。cat将它们连接起来,就像往常一样。您可以通过使用cat先写入然后连接来测试这一点:

cat > file1
# write something
# hit Ctrl+D twice to end file
# repeat steps with file2
cat file1 file2

答案4

单程:

paste -d'\0' test1 test2

输出:

thisis

相关内容