我正在调试shell脚本并尝试找出以下命令执行的任务:
sed -i '1,+999d' /home/org_user/data.txt
我需要更改此命令,因为它失败并出现以下错误:
illegal option sed -i
但在改变之前,我需要了解BAU的功能。
赞赏这方面的任何意见。
答案 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
就会编辑文件。
来自sed(1) 的-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
http://www.gnu.org/software/sed/manual/sed.html#Introduction
答案 2 :(得分:4)
sed
的某些实现不支持-i
选项。
sed -e '...' file > tmp
mv tmp file