2012-07-09 130 views
1
cat report.txt | sed 's/<\/li>/<\/li> \n/g' > report.txt 

這顯然會導致一個空文件。BASH,cat緩衝區

是否有一種機制允許您在處理數據之前存儲數據或存儲輸出,直到命令完成執行並寫入文件?

http://en.wikipedia.org/wiki/Pipeline_(Unix)#Implementation:。

」 ...接收程序可能僅能夠接受每秒100個字節,但沒有數據丟失而是,發送程序的輸出在隊列中保持當接收程序已準備好讀取數據,操作系統將從隊列中發送數據,然後從隊列中刪除該數據。「

聽起來像應該有一個簡單的技巧來加載到隊列中,而不是立即寫入文件,然後在命令完成後卸載它?

非常感謝!

回答

2

你需要的是編輯in place

sed -i 's/<\/li>/<\/li> \n/g' report.txt 
+0

這是可行的。 我想通了: 'echo「$(cat [file] | cmd1 | cmd2)」> [file]' 同樣適用,因爲子shell首先執行。 – pnovotnak 2012-07-09 17:11:02