我正在调试一个 shell 脚本并试图找出以下命令执行的任务:
sed -i '1,+999d' /home/org_user/data.txt
我需要更改此命令,因为它失败并出现以下错误:
illegal option sed -i
但在改变之前,我需要了解 BAU 的功能。
感谢这方面的任何投入。
我正在调试一个 shell 脚本并试图找出以下命令执行的任务:
sed -i '1,+999d' /home/org_user/data.txt
我需要更改此命令,因为它失败并出现以下错误:
illegal option sed -i
但在改变之前,我需要了解 BAU 的功能。
感谢这方面的任何投入。
它的适用用途如下。假设您有以下文件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
不幸的是,由于重定向的性质,上面只会产生一个空白文件。
相反,必须为输出创建一个临时文件,该文件稍后会覆盖原始文件,如下所示:
sed 's/"p"/0/g' file.txt > tmp.txt && mv tmp.txt file.txt
而不是在 sed edit in place 选项上使用 -i 进行长时间的解决方法,而是允许使用更简单的命令:
sed -i 's/"p"/0/g' file.txt
如果-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
的某些实现sed
不支持该-i
选项。它的作用可以通过以下方式模拟
sed -e '...' file > tmp
mv tmp file