如果我有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