免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5049 | 回复: 15
打印 上一主题 下一主题

sort/cat命令的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-15 13:36 |只看该作者 |倒序浏览
12可用积分
sort -m src.txt >> desc.txt


假如文件src.txt比较大,在命令执行的时候我中断进程,那么desc.txt也会写入部分内容,

我想要的是,假如进程中断,那么就不写入内容,也就是要么成功要么不成功! 谢谢大家帮忙

最佳答案

查看完整内容

大量的数据写入磁盘,需要一定时间的,所以会出现你这样子的情况。上面的代码使用一个临时文件保存初步排序结果,然后输出到最终的文件。如果需要更加严格一些,可以这么做:1. 将输出文件拷贝到临时文件A2. 排序结果输出到临时文件B3. 将排序结果B合并到临时文件A4. 将临时文件更名覆盖输出文件

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2007-01-15 13:36 |只看该作者
原帖由 ywd 于 2007-1-15 13:36 发表于 1楼  
sort -m src.txt >> desc.txt


假如文件src.txt比较大,在命令执行的时候我中断进程,那么desc.txt也会写入部分内容,

我想要的是,假如进程中断,那么就不写入内容,也就是要么成功要么不成功 ...


  1. sort -m src.txt > /tmp/$user.sort && cat /tmp/$user.sort >> desc.txt
复制代码


大量的数据写入磁盘,需要一定时间的,所以会出现你这样子的情况。

上面的代码使用一个临时文件保存初步排序结果,然后输出到最终的文件。

如果需要更加严格一些,可以这么做:
1. 将输出文件拷贝到临时文件A
2. 排序结果输出到临时文件B
3. 将排序结果B合并到临时文件A
4. 将临时文件更名覆盖输出文件


  1. touch desc.txt
  2. cp -f desc.txt /tmp/desc.txt.$user.tmp
  3. sort -m src.txt > /tmp/sort.$user.tmp
  4. cat /tmp/sort.$user.tmp >> /tmp/desc.txt.$user.tmp
  5. mv -f /tmp/desc.txt.$user.tmp desc.txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-01-15 16:26 |只看该作者

回复 #2 HonestQiao 的帖子

[上面的代码使用一个临时文件保存初步排序结果,然后输出到最终的文件。  ]

谢谢乔老大,也就是说先排序,后合并,假如用cat再合并的化,还是会出项这问题,我测试了一下cat比sort -m 快不了多少

还有你的详细方法,感觉太麻烦了,因为我的输出文件还是很大的,另外进程中断和断电也应该是同样的效果

谢谢讨论!!

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2007-01-15 18:20 |只看该作者
原帖由 ywd 于 2007-1-15 16:26 发表于 3楼  


谢谢乔老大,也就是说先排序,后合并,假如用cat再合并的化,还是会出项这问题,我测试了一下cat比sort -m 快不了多少

还有你的详细方法,感觉太麻烦了,因为我的输出文件还是很大的,另外进程中断和断 ...



如果需要更加严格一些,可以这么做:
1. 将输出文件拷贝到临时文件A
2. 排序结果输出到临时文件B
3. 将排序结果B合并到临时文件A
4. 将临时文件更名覆盖输出文件

你可以这么做啊。
这样不到最后一步,你的数据都不会改变的。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
5 [报告]
发表于 2007-01-15 18:22 |只看该作者
原帖由 ywd 于 2007-1-15 16:26 发表于 3楼  


谢谢乔老大,也就是说先排序,后合并,假如用cat再合并的化,还是会出项这问题,我测试了一下cat比sort -m 快不了多少

还有你的详细方法,感觉太麻烦了,因为我的输出文件还是很大的,另外进程中断和断 ...


进程中断和断电

要考虑各种的情况,还要求简单,恐怕不是很好做到的。

论坛徽章:
0
6 [报告]
发表于 2007-01-15 18:33 |只看该作者
原帖由 ywd 于 2007-1-15 16:26 发表于 3楼  

另外进程中断和断电也应该是同样的效果

效果完全不同
中断可以触发机制,断电你什么都干不了

论坛徽章:
0
7 [报告]
发表于 2007-01-15 19:27 |只看该作者
linux追加文件的时候难道就没有这样的机制吗!

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
8 [报告]
发表于 2007-01-15 20:28 |只看该作者
原帖由 ywd 于 2007-1-15 19:27 发表于 7楼  
linux追加文件的时候难道就没有这样的机制吗!


  准确地来说,楼主是不是需要一种回滚机制?

  

论坛徽章:
0
9 [报告]
发表于 2007-01-16 09:02 |只看该作者
原帖由 HonestQiao 于 2007-1-15 20:28 发表于 8楼  


  准确地来说,楼主是不是需要一种回滚机制?

  



对,但是最好利用系统原有的功能,假如用变通的方法,有点.

论坛徽章:
0
10 [报告]
发表于 2007-01-16 09:20 |只看该作者
什么机制,遇到断电,都比不上一台UPS。。。

断电没有必要当作一种情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP