根据内容按字母顺序对文件进行排序,直到第一个“=”

Kev*_*son 2 sorting bash

我曾询问过根据内容按字母顺序对文件进行排序,直到 fist =,并得到了答案: 按第一个字符串按 bash 排序文本文件(直到 '=')

现在我还有另一个问题:有没有办法“就地”做到这一点?

我的意思是确实可以sort -t= sort.list完成这项工作,并在屏幕上显示排序的内容;但sort -t= sort.list > sort.list 导致一个空sort.list文件。我当然可以:

sort -t= sort.list > sort1.list
Run Code Online (Sandbox Code Playgroud)

进而

mv sort1.list sort.list
Run Code Online (Sandbox Code Playgroud)

但是有没有办法在一个命令中做到这一点?

Ben*_* W. 5

您可以像这样指定输出文件名:

sort -t= sort.list -o sort.list
Run Code Online (Sandbox Code Playgroud)

它不会覆盖您的文件。如果你sort没有这个选项,你必须使用类似的东西

sort -t= sort.list > sort.tmp && mv sort.tmp sort.list
Run Code Online (Sandbox Code Playgroud)

...但如果它符合 POSIX 标准,它应该有这个选项。


che*_*ner 1

使用该-o选项而不是写入标准输出。

sort -t= sort.list -o sort.list
Run Code Online (Sandbox Code Playgroud)

它并不是真正就位,但sort在内部处理临时文件舞蹈。