【问题标题】:Unix: cat-ing a file out to itself - why does this blank the file? [duplicate]Unix: cat-ing 一个文件到它自己 - 为什么这会使文件空白? [复制]
【发布时间】:2013-05-19 11:33:06
【问题描述】:

有人可以向我解释为什么这段代码有效(即 file2.txt 是 file1.txt 的按字母顺序排序的内容):

cat file1.txt | sort > file2.txt

但是当我这样做时,file1.txt 会自己空白...?

cat file1.txt | sort > file1.txt

正如你所猜到的,我试图简单地按字母顺序对文件的内容进行排序,然后写回同一个文件...

(我用的是mac 10.8.3的终端,写的日期是19may2013)

【问题讨论】:

    标签: bash unix sorting pipe cat


    【解决方案1】:

    shell 在打开file1.txt 后启动sort 进行输出(截断它,即丢弃所有数据)。然后它从cat 开始,file1.txt 打开以供阅读。 shell 的语义使得管道从file.txt 获取一页左右的输入可能是可行的,但实际上几乎所有的 shell(也就是说所有这些,但也许有一些 shell 我've never used that don't behavior) 将在cat 读取任何数据之前截断文件。

    要执行此操作,您必须使用临时文件。 (嗯,使用临时文件不是强制性的。如果文件足够小,这样的事情可能会工作cat file1.txt | ( sleep 2; sort > file1.txt ),但不能保证。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2018-04-07
    • 2017-09-08
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多