sed -i选项有什么作用?

时间:2013-08-30 07:33:20

标签: unix sed command-line option

我正在调试shell脚本并尝试找出以下命令执行的任务:

sed -i '1,+999d' /home/org_user/data.txt

我需要更改此命令,因为它失败并出现以下错误:

illegal option sed -i

但在改变之前,我需要了解BAU的功能。

赞赏这方面的任何意见。

3 个答案:

答案 0 :(得分:43)

其适用范围如下。假设您有以下文件file.txt

1, 2, 6, 7, "p" 

我们想用0替换“p”。

sed 's/"p"/0/g' file.txt

使用上述内容只需将输出打印到命令行。

您认为为什么不将这些文本重定向回文件:

sed 's/"p"/0/g' file.txt > file.txt

不幸的是,由于the nature of redirects,上面只会生成一个空白文件。

必须为输出创建临时文件,稍后将覆盖原始文件,如下所示:

sed 's/"p"/0/g' file.txt > tmp.txt && mv tmp.txt file.txt

使用-i进行上面的sed编辑选项,而不是使用上面的长解决方法选项允许更简单的命令:

sed -i 's/"p"/0/g' file.txt

答案 1 :(得分:7)

如果提供了-i选项,sed就会编辑文件。

   -i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if extension supplied)
来自sed(1)

http://www.gnu.org/software/sed/manual/sed.html#Introduction

答案 2 :(得分:4)

sed的某些实现不支持-i选项。

可以模拟它的作用
sed -e '...' file > tmp
mv tmp file