gpt4 book ai didi

linux - 如何使用针对同一文件运行的命令来更新文件?

转载 作者:太空狗 更新时间:2023-10-29 12:15:09 26 4
gpt4 key购买 nike

作为一个简单的例子,考虑以下命令:

$ sort file.txt 

这将按排序顺序输出文件的数据。如何将这些数据放回同一个文件中?我想用排序后的结果更新文件。

这不是解决方案:

$ sort file.txt > file.txt

... 因为它会导致文件变成空白。有没有办法在不创建临时文件的情况下更新此文件?

当然,我可以这样做:

sort file.txt > temp.txt; mv temp.txt file.txt 

但我宁愿将结果保存在内存中,直到处理完成,然后再将它们写回同一个文件。 sort 实际上有一个标志,可以让这成为可能:

sort file.txt -o file.txt

...但我正在寻找一种解决方案,该解决方案不依赖于具有特殊标志的二进制文件来解决这个问题,因为并不是所有的都可以保证。是否有某种 linux 命令可以保存数据直到处理完成?

最佳答案

对于排序,可以使用-o选项。

对于更通用的解决方案,您可以使用 moreutils 包中的 sponge:

sort file.txt | sponge file.txt

如下所述,此处的错误处理很棘手。如果在 sponge 之前的步骤中出现问题,您可能会得到一个空文件。

这是这个问题的副本,它讨论了上面的解决方案:How do I execute any command editing its file (argument) "in place" using bash?

关于linux - 如何使用针对同一文件运行的命令来更新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com