Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用SED从文件中删除一行,并将输出重定向到同一文件_Unix_Sed_Solaris_Ksh - Fatal编程技术网

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

Unix 使用SED从文件中删除一行,并将输出重定向到同一文件,unix,sed,solaris,ksh,Unix,Sed,Solaris,Ksh,我使用sed命令删除文件的前两行和最后一行,并希望将输出重定向到同一个文件 例如: sed '1,2d' '$d' pra >pra 这将删除文件的前两行和最后一行。但是当我尝试将输出重定向到同一个文件时,出现了一个问题 当我打开并看到重定向文件pra时,文件中没有任何内容 有没有更好的方法呢..从文件中删除前两行和最后一行,并用相同的文件名保存 这在Solaris 10上是不可能的,除非您已将GNU sed作为可选软件包安装。无论如何,使用中间文件并将-i选项与备份文件一起使用是最安全

我使用sed命令删除文件的前两行和最后一行,并希望将输出重定向到同一个文件

例如:

sed '1,2d' '$d' pra >pra
这将删除文件的前两行和最后一行。但是当我尝试将输出重定向到同一个文件时,出现了一个问题

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


有没有更好的方法呢..从文件中删除前两行和最后一行,并用相同的文件名保存

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

在Solaris 10上,您可以改为执行以下操作:

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

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

在Solaris 10上,您可以改为执行以下操作:

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

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

例如

这比重定向到临时文件,然后返回到原始文件要整洁得多


正如下面指出的,-in-place在Solaris上可能不可用…

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

例如

这比重定向到临时文件,然后返回到原始文件要整洁得多


正如下面指出的,--in-place在Solaris上可能不可用…

请改用
sed-i'1,2d'…
。许多问题都会告诉您,读写同一个文件会截断它。@DEVNULL我使用的是Solaris 10,在kshell中工作是非法的选项。@DEVNULL有更好的方法吗,i、 e使用任何其他选项当您说
command>file
时,即使在命令执行之前,文件也会立即被截断并打开以供写入。请改用
sed-i“1,2d”…
。许多问题都会告诉您,读取和写入同一个文件会截断它。@DEVNULL我正在使用Solaris 10并在kshell中工作这是一个非法的选择。@devnull有没有更好的方法,i、 e使用任何其他选项当您说
command>file
时,即使在执行命令之前,文件也会立即被截断并打开以供写入。不要相信在Solaris上默认情况下就地选项可用不要相信在Solaris上默认情况下就地选项可用