3

我有 n 个包含一行的文件,并且想将它们连接起来:

输入文件:

file_1
A B C

file_2 
1 2 3 

所需的控制台输出结果:

A B C
1 2 3 

但随着

$ cat file_1 file_2 

我得到

A B C1 2 3 
4

5 回答 5

5

尝试

echo | cat file_1 - file_2

或者,使用换行符终止 file_1 的最后一行。

还有一种方式:

$ echo > n
$ cat file_1 n file_2 n file_1 n file_2 n
A B C
1 2 3
A B C
1 2 3
于 2013-08-01T14:21:34.367 回答
2

如果您有 2 个以上的文件,则可以在 shell 中使用循环并echo用于插入新行:

for f in file1 file2 file3; do cat "$f"; echo; done > output
于 2013-08-01T14:26:50.987 回答
0

如果您只有两个文件,则可以使用echo输出一个新行并将其放在两个文件之间,如下所示:

echo | cat file1 - file2
于 2013-08-01T14:22:41.333 回答
0

这是我在Ubuntu 12.04bash上使用shell观察到的。

$ echo "1 2 3" > file1
$ echo "a b c" > file2
$ cat file1 file2
1 2 3
a b c

分开不同的线条。

看起来echo命令确保将正确终止的字符串写入两个文件。

于 2013-08-01T14:23:07.773 回答
0

file1最后缺少换行符。因此,当您使用cat它们时,没有打印换行符file1file2.

您要么需要修改file1以包含尾随换行符,要么以其他方式插入它。

于 2013-08-01T14:23:31.167 回答