从文件中使用SED删除一行,并将输出重定向到同一文件

时间:2014-04-10 08:56:48

标签: unix sed solaris ksh

我使用sed命令从文件中删除前两行和最后一行,我想将输出重定向到SAME文件

示例:

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

这会删除前两行&文件的最后一行。但是当我尝试将输出重定向到同一文件时,会出现问题。

当我打开并看到重定向的文件pra文件中没有任何内容。

有没有更好的方法来执行此操作..从文件中删除前两行和最后一行,并使用相同的文件名保存它。

2 个答案:

答案 0 :(得分:2)

在Solaris 10上是不可能的,除非您将GNU sed作为可选包安装​​。无论如何,最安全的方法是使用中间文件并将-i选项与备份文件一起使用。

在Solaris 10上,您可以这样做:

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

答案 1 :(得分:2)

要将输出保存到同一文件,请使用--in-place或-i modifier。

E.g。

sed -i options_you_want name_of_file_to_change

它比重定向到临时文件,然后回到原始文件更整洁。

如下所述, - 在Solaris上可能无法使用...