作者blueguan ()
看板C_and_CPP
標題Re: [問題] 如何刪除一個檔案中的特定文字
時間Sun Dec 25 02:13:53 2016
※ 引述《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. 處理過程繁瑣.
想請問各位資深的大大~有甚麼好想法..
感謝感謝~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.38.174
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1482603236.A.888.html
1F:推 wtchen: 另外輸出一個檔案,邊讀原始檔案邊處理輸出到新檔 12/25 02:49
2F:→ wtchen: 然後rename? 12/25 02:49
3F:→ wawi2: 1樓正解 12/25 03:04
4F:→ blueguan: 好的~感謝! 所以沒有辦法不儲存新檔案的方式... 12/25 10:42
5F:推 vanillastarp: sed 's/Good //' in.txt > out.txt bash偷懶方式XD 12/25 11:05
6F:→ Neisseria: 用命令列工具算作弊吧 XD 直接用別人寫好的 code 12/25 13:26
7F:推 longlongint: 可以直接寫回去吧 因為檔案只會變短不會變長 12/26 01:00
8F:→ longlongint: 開rw模式 用seek移動 12/26 01:01
9F:→ longlongint: 但是開新檔比較簡單 12/26 01:01
10F:→ longlongint: 不然就打開vim...... 12/26 01:02