我有两个文件,其中有一些名称,当我运行时cat file1 file2 | sort
,终端显示按字母顺序排序的名称,但是当我运行时cat file1 file2 > file3 | sort
我没有看到排序的输出,为什么?
Ram*_*esh 11
你已经重定向的输出file1
,并file2
以新的文件file3
。
使用此命令cat file1 file2 > file3 | sort
,sort
在管道之后。
这可以验证如下。
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)