Mac OSX sed - 从多个文件中删除包含点的字符串

Mac OSX sed - 从多个文件中删除包含点的字符串

尝试使用 sed 删除目录中多个文件中的字符串。该文件夹包含大量 sql 文件,所有文件都带有我需要删除的表名。例如,其中一个文件如下所示:

INSERT INTO staging.eav_attribute_set (attribute_set_id, entity_type_id, attribute_set_name, sort_order) VALUES (1, 1, 'Default', 2);
INSERT INTO staging.eav_attribute_set (attribute_set_id, entity_type_id, attribute_set_name, sort_order) VALUES (2, 2, 'Default', 2);
INSERT INTO staging.eav_attribute_set (attribute_set_id, entity_type_id, attribute_set_name, sort_order) VALUES (3, 3, 'Default', 1);
INSERT INTO staging.eav_attribute_set (attribute_set_id, entity_type_id, attribute_set_name, sort_order) VALUES (4, 4, 'Default', 1);

我需要staging.从所有行中删除。我已经从文件所在的目录尝试了以下操作:

sed -i 's/staging.//g' *
sed -i 's/staging\.//g' *
sed -i 's|staging.||g' *

但收到以下信息:

sed: 1: "eav_attribute_set ...": unterminated substitute pattern

答案1

使用 FreeBSD sed(在 macOS 上),您需要:

sed -i '' 's/staging\.//g' ./*

答案2

这将从staging.您的文件中删除。

cat ${yourfile} | sed 's/staging\.//g' > tmp && mv tmp ${yourfile}

相关内容