如何将两个文件连接成一个新文件并将输出排序为一行

Moh*_*med 8 sort cat

我有两个文件,其中有一些名称,当我运行时cat file1 file2 | sort,终端显示按字母顺序排序的名称,但是当我运行时cat file1 file2 > file3 | sort我没有看到排序的输出,为什么?

Ram*_*esh 11

你已经重定向的输出file1,并file2以新的文件file3

使用此命令cat file1 file2 > file3 | sortsort在管道之后。

这可以验证如下。

cat file1
A
Z
B
cat file2
F
G
C
Run Code Online (Sandbox Code Playgroud)

现在,当我运行的命令,cat file1 file2 > file3 | sort我们可以看到的内容file1,并file2写入file3但不排序。

我相信你想要实现的目标可以很容易地实现,

cat file1 file2 | sort > file3
Run Code Online (Sandbox Code Playgroud)

但是,它不会在控制台窗口中显示输出。

如果您需要将排序后的两个文件的输出写入一个新文件,同时排序输出在控制台中可用,您可以执行以下操作。

cat file1 file2 | sort > file3; cat file3
Run Code Online (Sandbox Code Playgroud)

但是,tee在这种情况下使用它是很好的。tee可以有效地用作,

cat file1 file2 | sort | tee file3
Run Code Online (Sandbox Code Playgroud)

上面的命令基本上连接了 2 个文件并对其进行排序并在控制台中显示输出,同时将管道的输出写入使用tee命令指定的新文件。

正如用户casey指出的那样,如果您zsh的系统上有可用的 shell,您也可以使用以下命令。

sort <file1 <file2 | tee file3
Run Code Online (Sandbox Code Playgroud)