尝试运行 sed 命令

尝试运行 sed 命令

我正在尝试运行以下 sed 命令,该命令显然是从互联网上复制粘贴的:

sed -i '' -E "s/create_table\ [:\"']([a-zA-Z0-9_]+)[\"']?/create_table\ :\1, options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC'/g" ./*.rb

然而它给了我:

sed: can't read s/create_table\ [:"']([a-zA-Z0-9_]+)["']?/create_table\ :\1, options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC'/g: No such file or directory

我无法理解......我可以得到一些帮助吗?

答案1

在 GNU 中,使用无需备份即可就地编辑文件的选项sed时,无需提供空后缀。但是,如果你这样做,-i必须紧跟在后面,-i中间没有空格:否则,将''被解释为 sed表达,这反过来会导致您的实际表达式s/pattern/replacement被解释为文件名。

综上所述,选项如下:

sed -i <other options> <expression> <files>

或者

sed -i'' <other options> <expression> <files>

相关内容