尽管它们确实给出了相同的结果,但我想知道它们之间是否存在差异,并且这是对文件中包含的内容进行排序的最合适方法。令我着迷的另一件事是定界符的使用,我注意到排序过滤器仅在用新行分隔字符串时才起作用,有什么方法可以做到这一点而不必在新行中写入新字符串
sort(1)命令读取文本行,对其进行分析和排序,然后写出结果。该命令用于读取lines,而unix / linux中的行以new line终止。
该命令将其第一个非选项参数作为要读取的文件;如果没有规范,则显示为标准输入。因此:
排序文件名
是带有此类参数的命令行。其他两个示例“ ... | sort”和“ sort <...>标准输入。对于sort(1)而言,效果是相同的。
无需在单独的行中写入新字符串的方式来进行此操作
最终不。但是,如果您愿意,可以使用另一个过滤器(一个程序)来提供sort的功能,该过滤器将读取非换行分隔的文件并创建要传递以进行排序的行。如果存在这样的程序并将其命名为“ myparse”,则可以执行以下操作:
myparse非换行分隔的文件|排序
使用cat
的解决方案涉及不必要地创建第二个过程。如果您在循环中执行许多此类操作,则可能是性能问题。
在将输入重定向到文件时,shell会设置文件与std输入的关联。如果该文件不存在,则外壳会抱怨文件丢失。
[当将文件名作为显式参数传递时,sort
进程必须关心打开文件并在存在可访问性问题时报告错误。