使用cat合并两个文件而不使用新行

时间:2011-10-12 20:14:24

标签: linux shell

我想合并两个文件cat file1 file2 > file3。但它从新线开始。我不希望这样。我可以使用tr将所有新行替换为空格,但我不能这样做,因为文件中有新行我不想替换。

3 个答案:

答案 0 :(得分:18)

您可以将head-1一起用作-c标志参数和-q

head -c -1 -q file1 file2 > file3

head -c -1将输出代码的最后1个字节(在这种情况下,最后1个字节 - 结束 - 不包括在内)。 -qfile3head默认情况下,当head多个文件时,文件名不会传递给tr


或者,正如此回答所建议的那样 - bash cat multiple files content in to single string without newlines ,将其传递给tr -d "\n"

{{1}}

答案 1 :(得分:2)

在bash中,你可以这样做:

cat <(sed -n '1n;p' file1) <(sed -n '1n;p' file2)

答案 2 :(得分:-1)

你可以使用awk:

awk '(FNR>1){print}' file1 file2

更新 - 工作原理:

我们要求awk处理两个文件:file1file2。如果条件(FNR>1)为真,它将打印整个记录(行)。 FNR是变量defined as

FNR - 当前输入文件中的输入记录编号。

所以,条件(FNR>1)每次都是真的,除了每个文件的第一行。这样我们就会跳过每个文件的第一行。