尝试使用 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}