我正在使用 sed 在 bash (GNU sed) 中搜索和替换文件中的两个字符串
这是之后的文件
-rw-r--r-- 1 websync www-data 4156 mar 27 12:56 /home/websync/tmp/sitio-oficial/sitios/wp-config.php
这是我运行的命令
sed 's/www-test/www/g' /home/websync/tmp/sitio-oficial/sitios/wp-config.php > /home/websync/tmp/sitio-oficial/sitios/wp-config.php
结果
-rw-r--r-- 1 websync www-data 0 mar 27 13:05 /home/websync/tmp/sitio-oficial/sitios/wp-config.php
编辑: 如果我不重定向 sed 的输出,那么我得到了正确的输出。如果我重定向到一个新文件,一切正常。
最佳答案
这是正常的。您不能像这样在管道中读取和写入同一个文件。 (这将与 sed 以外的其他实用程序一起失败)。
改用就地标志 -i
:
sed -i 's/www-test/www/g' /home/websync/tmp/sitio-oficial/sitios/wp-config.php
关于bash - 为什么 sed replace + redirect 删除了我的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893445/