6

在 UNIX 脚本编程中,cat 是一个可以将 2 个文件组合在一起的命令:

cat file1 file2 > file3

这通过结合前两个生成第三个。

此外, cat 可以与管道一起使用:

cat file1 | tail -4

这将列出文件 1 的最后 4 行。

问题:我如何结合文件 1 和 2 的最后 4 行来生成文件 3?

我在这里有点迷路:如何给 cat 2 个流输入?

4

4 回答 4

8

您可以执行以下操作(在 bash 中):

(tail -4 file1; tail -4 file2) > file3

根据您的问题,这不会使用 cat ,但它确实实现了您描述的目标。

于 2011-12-11T15:51:08.380 回答
6

Bash 有一个进程替换功能:

  cat <(tail -4 file1) <(tail -4 file2)

我经常使用此功能来区分两个文件的略微更改的版本。

于 2011-12-11T16:00:31.510 回答
2

有什么问题:

cat file1 | tail -4 > ./file3; cat file2 | tail -4 >> ./file3

?

于 2011-12-11T15:59:33.730 回答
2

您可以使用peefrom moreutils来执行此操作。这是我的解决方案

pee 'tail file1' 'tail file2' </dev/null > file3
于 2011-12-11T16:06:08.230 回答