我有一個巨大的文件,大約10 MB,它有大約175,000行。我試着像這樣截斷它:如何刪除「.data」文件中的行?
sed '500,175000d' <file-name.data>
我重新打開文件,所有的行仍然存在!我測試了這個與其他文件,它的工作原理。由於某些原因,.data擴展名不起作用?我如何刪除這些行?
我有一個巨大的文件,大約10 MB,它有大約175,000行。我試着像這樣截斷它:如何刪除「.data」文件中的行?
sed '500,175000d' <file-name.data>
我重新打開文件,所有的行仍然存在!我測試了這個與其他文件,它的工作原理。由於某些原因,.data擴展名不起作用?我如何刪除這些行?
您需要可以輸出重定向到一個新的文件中像
sed '500,175000d' file-name.data >newFile
或使用替代選項編輯其重寫輸入文件
sed -i '500,175000d' file-name.data
由Wintermute
指出編輯:
更快的sed將只是
sed -i '500q' file-name.data # prints 1-500 and quits after line 500
您提到的「更快」的sed:如果我執行'sed -i'500q'文件名',那麼它會給我一個錯誤:'命令末尾的文件名額外字符'。而且,如果我執行'sed -i.bak'500q'file-name',那麼它不會拋出錯誤,但它根本不會更改文件。我的操作系統是Darwin Kernel版本14.3.0。 – Hunle
有兩個sed(或更多)的實現,看看這個[post](http://stackoverflow.com/questions/4247068/sed-command-failing-on-mac-but-works-on-linux)。另外,在-i和.bak之間應該有一個空格 – Tom
忘了'-i'? – Wintermute
奇怪的是,他們沒有提及[這裏](http://www.folkstalk.com/2012/06/delete-range-of-lines-unix-linux.html)謝謝 – Hunle
其實你需要'sed -i .bak ....' – Hunle