2015-07-09 74 views
0

我有一個巨大的文件,大約10 MB,它有大約175,000行。我試着像這樣截斷它:如何刪除「.data」文件中的行?

sed '500,175000d' <file-name.data> 

我重新打開文件,所有的行仍然存在!我測試了這個與其他文件,它的工作原理。由於某些原因,.data擴展名不起作用?我如何刪除這些行?

+3

忘了'-i'? – Wintermute

+0

奇怪的是,他們沒有提及[這裏](http://www.folkstalk.com/2012/06/delete-range-of-lines-unix-linux.html)謝謝 – Hunle

+0

其實你需要'sed -i .bak ....' – Hunle

回答

1

您需要可以輸出重定向到一個新的文件中像

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 
+0

您提到的「更快」的sed:如果我執行'sed -i'500q'文件名',那麼它會給我一個錯誤:'命令末尾的文件名額外字符'。而且,如果我執行'sed -i.bak'500q'file-name',那麼它不會拋出錯誤,但它根本不會更改文件。我的操作系統是Darwin Kernel版本14.3.0。 – Hunle

+0

有兩個sed(或更多)的實現,看看這個[post](http://stackoverflow.com/questions/4247068/sed-command-failing-on-mac-but-works-on-linux)。另外,在-i和.bak之間應該有一個空格 – Tom