我正在用Unix sed
命令进行一些动手操作.我在文件中尝试替换和追加命令.但困难在于,我必须创建一个中间文件,然后mv
将其重命名为原始文件.
有没有办法在同一个文件中一次性完成?
[root@dhcppc0 practice]# sed '1i\
> Today is Sunday
> ' file1 > file1
[root@dhcppc0 practice]# cat file1
[root@dhcppc0 practice]#
Run Code Online (Sandbox Code Playgroud)
该文件已被删除!
[root@dhcppc0 practice]# sed 's/director/painter/' file1 > file1
[root@dhcppc0 practice]# cat file1
Run Code Online (Sandbox Code Playgroud)
该文件已被删除!
小智 17
试试这个 -
sed -i '' 's/originaltext/replacementtext/g' filename | cat filename
Run Code Online (Sandbox Code Playgroud)
-i''用于提供备份文件.如果您确信您的替换不会导致问题,您可以将''传递给没有备份文件
/ g用于全局替换.如果你在一行中有多个原始文本,那么使用/ g选项将替换所有其他只会替换第一个原始文本.
Mar*_*gen 13
GNU sed知道一个选项-i
,它可以对给定文件进行就地编辑.
在执行操作时file1 > file1
,实际发生的是,在程序(将其名称作为参数)之前,shell 打开并截断文件,从中读取任何内容.
更新:
sed的手册页在-i
选项上说明了以下内容(感谢Delan提及它):
Run Code Online (Sandbox Code Playgroud)-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
归档时间: |
|
查看次数: |
9939 次 |
最近记录: |