All*_*ere 29 unix command-line sed option
我正在调试shell脚本并尝试找出以下命令执行的任务:
sed -i '1,+999d' /home/org_user/data.txt
Run Code Online (Sandbox Code Playgroud)
我需要更改此命令,因为它失败并出现以下错误:
illegal option sed -i
Run Code Online (Sandbox Code Playgroud)
但在改变之前,我需要了解BAU的功能.
感谢这方面的任何投入.
Phi*_*ide 52
其适用用途如下.假设您有以下文件file.txt:
1, 2, 6, 7, "p"
Run Code Online (Sandbox Code Playgroud)
我们想用0代替"p".
sed 's/"p"/0/g' file.txt
Run Code Online (Sandbox Code Playgroud)
使用上面的命令只需将输出打印到命令行.
你会想为什么不将这个文本重定向回文件,如下所示:
sed 's/"p"/0/g' file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于重定向的性质,上面只会产生一个空白文件.
而是必须为输出创建一个临时文件,稍后将覆盖原始文件,如下所示:
sed 's/"p"/0/g' file.txt > tmp.txt && mv tmp.txt file.txt
Run Code Online (Sandbox Code Playgroud)
而不是使用上面的长期解决方法使用-i进行sed编辑选项允许使用更简单的命令:
sed -i 's/"p"/0/g' file.txt
Run Code Online (Sandbox Code Playgroud)
如果-i给出选项,则sed编辑文件.
Run Code Online (Sandbox Code Playgroud)-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
Run Code Online (Sandbox Code Playgroud)