2014-04-10 39 views
0

我用sed命令來刪除一個文件頭兩行和最後一行,我想輸出重定向到同一個文件刪除使用SED從一個文件中的行和輸出重定向到同一個文件

實例:

sed '1,2d' '$d' pra >pra 

此刪除前兩行從文件。但&最後一行,當我嘗試將輸出重定向到相同的文件,一個問題時。

當我打開並看到重定向的文件pra文件內沒有任何內容。

有沒有更好的方法來做到這一點.. ..刪除文件的前兩行和最後一行,並使用相同的文件名保存它。

+0

使用'sed的-i '1,2d' ...'來代替。 – devnull

+0

許多問題會告訴你,讀取和寫入同一個文件會截斷它。 – devnull

+0

@DEVNULL我正在使用Solaris 10和在kshell中使用它的非法選項。 –

回答

2

除非您將GNU sed作爲可選軟件包安裝,否則在Solaris 10上是不可能的。無論如何,使用中間文件並在備份文件中使用-i選項是最安全的。

在Solaris 10上你可以這樣做,而不是:

sed '1,2d; $d' file > file.new && mv file.new file 
+0

謝謝:)我遵循這種方式爲我的腳本:) –

0

要節省輸出到同一個文件,使用--in就地或-i修改。

E.g.

sed -i options_you_want name_of_file_to_change 

它比重定向到臨時文件,然後回到原始文件更整潔。

正如指出的下方,--in-地方可能無法使用Solaris上...

+0

不相信在Solaris上默認可用的就地選項 – iruvar

+0

啊,好的 - 謝謝。 – pokero

相關問題