Re: [問題] 如何刪除一個檔案中的特定文字

作者: blueguan   2016-12-25 02:13:53
※ 引述《blueguan ()》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: Linux
: 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
: GCC
: 問題(Question):
: 請問我想要在一個文字檔中山刪特定一段,想請問各位這樣要怎麼寫會比較好.
: EX:
: This is a Good Book
: 我想要刪掉Good這個字串.
: 檔案內容會變成是
: This is a Book.
: 我目前想到最好的方法就是複製一個檔案
: 找到特定字串就不複製.
: 但是想請問各位大大有甚麼比較好的方法.
: 感謝
先描述目前我想到的方式
1. 一開始跑, 全部拉到記憶體. 然後處理完. 也持續放在記憶體.
一直到整個流程都跑完後,再把記憶體後再扔回file
缺點:1. 記憶體要太多了.
2. 無法邊跑邊看file的變化.
3. 中途不小心被關掉. 檔案會不sync.
2. 一開始跑, 全部拉到記憶體, 處理完. 不放在記憶體. 就扔回給file
缺點:1. 過程要一直開關file. I/O 過多.
2. 處理過程繁瑣.
想請問各位資深的大大~有甚麼好想法..
感謝感謝~~~
作者: wtchen (沒有存在感的人)   2016-12-25 02:49:00
另外輸出一個檔案,邊讀原始檔案邊處理輸出到新檔然後rename?
作者: wawi2 (@@)   2016-12-25 03:04:00
1樓正解
作者: blueguan   2016-12-25 10:42:00
好的~感謝! 所以沒有辦法不儲存新檔案的方式...
作者: vanillastarp (小皮)   2016-12-25 11:05:00
sed 's/Good //' in.txt > out.txt bash偷懶方式XD
作者: Neisseria (Neisseria)   2016-12-25 13:26:00
用命令列工具算作弊吧 XD 直接用別人寫好的 code
作者: longlongint (華哥爾)   2016-12-26 01:00:00
可以直接寫回去吧 因為檔案只會變短不會變長開rw模式 用seek移動但是開新檔比較簡單不然就打開vim......

Links booklink

Contact Us: admin [ a t ] ucptt.com