cat file_name之间的区别|排序,排序

问题描述 投票:0回答:2

尽管它们确实给出了相同的结果,但我想知道它们之间是否存在差异,并且这是对文件中包含的内容进行排序的最合适方法。令我着迷的另一件事是定界符的使用,我注意到排序过滤器仅在用新行分隔字符串时才起作用,有什么方法可以做到这一点而不必在新行中写入新字符串

bash shell sorting stdin
2个回答
0
投票

sort(1)命令读取文本行,对其进行分析和排序,然后写出结果。该命令用于读取lines,而unix / linux中的行以new line终止。

该命令将其第一个非选项参数作为要读取的文件;如果没有规范,则显示为标准输入。因此:

排序文件名

是带有此类参数的命令行。其他两个示例“ ... | sort”和“ sort <...>标准输入。对于sort(1)而言,效果是相同的。

无需在单独的行中写入新字符串的方式来进行此操作

最终不。但是,如果您愿意,可以使用另一个过滤器(一个程序)来提供sort的功能,该过滤器将读取非换行分隔的文件并创建要传递以进行排序的行。如果存在这样的程序并将其命名为“ myparse”,则可以执行以下操作:

myparse非换行分隔的文件|排序


0
投票

使用cat的解决方案涉及不必要地创建第二个过程。如果您在循环中执行许多此类操作,则可能是性能问题。

在将输入重定向到文件时,shell会设置文件与std输入的关联。如果该文件不存在,则外壳会抱怨文件丢失。

[当将文件名作为显式参数传递时,sort进程必须关心打开文件并在存在可访问性问题时报告错误。

© www.soinside.com 2019 - 2024. All rights reserved.