Mac OSX sed - removendo uma string contendo um ponto de vários arquivos

0

Tentando remover uma string entre vários arquivos em um diretório com sed. A pasta contém uma grande quantidade de arquivos sql, todos com nomes de tabela que preciso remover. Por exemplo, um dos arquivos é assim:

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);

Eu preciso remover staging. de todas as linhas. Eu tentei o seguinte do diretório onde os arquivos são:

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

Mas receba o seguinte:

sed: 1: "eav_attribute_set ...": unterminated substitute pattern
    
por mindfullsilence 28.08.2018 / 21:15

2 respostas

2

Com o FreeBSD sed (como encontrado no macOS), você precisa:

sed -i '' 's/staging\.//g' ./*
    
por 28.08.2018 / 22:31
0

Isso removerá staging. do seu arquivo.

cat ${yourfile} | sed 's/staging\.//g' > tmp && mv tmp ${yourfile}
    
por 28.08.2018 / 22:00

Tags