Sco*_*ter 3 sorting shell sed pipe
我想在文本文件中添加一行,以便对文本文件最初排序的结果进行排序.例如:
cp file tmp; echo "new line" >> tmp; sort tmp > file; rm -f tmp
Run Code Online (Sandbox Code Playgroud)
我真的很喜欢没有临时文件和没有分号(使用管道代替吗?); 使用sed是可以接受的.这是可能的,如果是的话,怎么样?
这是我能想到的最短的衬里,没有任何临时文件:
$ echo "something" >> file; sort file -o file
Run Code Online (Sandbox Code Playgroud)
echo "New Line" | sort -o file - file
Run Code Online (Sandbox Code Playgroud)
这-o file意味着将结果写入文件(并且将任何输入文件作为输出文件显然是安全的).在-它自己的方式"读标准输入"其中包含的信息,新的生产线.将file在最后的手段"也读file".这适用于从(至少)第七版UNIX™大约1978年开始的任何Unix排序,甚至可能在此之前.其他实用程序没有临时文件或依赖项.
鉴于单行是"已排序"且文件也按排序顺序排列,您可以通过合并两个已排序的输入来加快进程:
echo "New Line" | sort -o file -m - file
Run Code Online (Sandbox Code Playgroud)
这也适用于甚至非常旧的排序命令.