首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以将您的输出文件与输入文件具有相同的名称,即覆盖?

是否可以将您的输出文件与输入文件具有相同的名称,即覆盖?
EN

Stack Overflow用户
提问于 2010-12-09 22:24:45
回答 4查看 953关注 0票数 0

由于我系统中的磁盘空间有限,我想用与输出文件相同的名称覆盖输入文件的名称。有可能吗?我知道不推荐这样做,但我已经备份了输入文件。我将在shell中使用一个循环来执行cut命令。

代码语言:javascript
运行
复制
#!/bin/bash
for i in {1..1000}
do
    cut --delimiter=' ' --fields=1,3-7 input$i.txt > input$i.txt
done
EN

回答 4

Stack Overflow用户

发布于 2010-12-09 22:27:13

您可以始终使用重定向到的临时文件,然后当您确定一切正常时,将其重命名为原始文件。

票数 3
EN

Stack Overflow用户

发布于 2010-12-09 22:33:28

一些gnu utils命令有一个剪切选项(如sed),允许您在适当的位置更改文件,使用sed可以完成文件过滤和编辑(如.....most )。

票数 2
EN

Stack Overflow用户

发布于 2010-12-09 23:27:40

外壳将解析命令并首先处理重定向。当它看到"> afile“时,它会截断"afile”并打开它进行写入。您的数据现在已被销毁。然后,外壳程序将文件名传递给cut,它现在没有什么可读的。

我是这样学到的:

代码语言:javascript
运行
复制
some | pipeline < my_file > my_file.tmp
ln my_file my_file.bak   # this is a hard link
mv my_file.tmp my_file

这将尽可能长时间地保持原始数据不变。

如果您有磁盘空间问题,则必须将输入文件完全读取到内存中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4399245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档