Sed

使用帶有“-i”選項的“sed”會創建名稱奇怪的新文件,同時保持輸入文件不變

  • August 30, 2022

我有這個命令:

❯ 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'',這將阻止創建備份文件,但您需要在文件中查找您正在使用的特定版本。

引用自:https://unix.stackexchange.com/questions/715352