我正在尝试运行以下 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>