Sed
使用帶有“-i”選項的“sed”會創建名稱奇怪的新文件,同時保持輸入文件不變
我有這個命令:
❯ sed -i 's/^CREATE DATABASE.*$//' world.sql
如果我執行它,它會說:
sed: -I or -i may not be used with stdin
並創建一個名為
orld.sql
. 原來的文件在之後仍然存在。所以我猜,看成
sed
命令?我怎樣才能防止這種行為?world.sql``w orld.sql
據我所知,
sed
在 MacOS 上是 FreeBSD 風格,在使用該選項時需要提供備份後綴。-i
您收到的錯誤消息意味著它錯誤地解釋了您的部分命令,因為您使用了該選項而沒有提供選項。所以,試試看
sed -i".backup" 's/^CREATE DATABASE.*$//' world.sql
這將創建一個
world.sql.backup
並以其他方式執行就地編輯world.sql
.某些
sed
版本可能接受空的備份後綴,如sed -i''
,這將阻止創建備份文件,但您需要在文件中查找您正在使用的特定版本。