sed e variáveis [duplicadas]

0

Eu sei que essa pergunta foi feita várias vezes, mas a solução não funciona para mim.

Eu tenho 2 arquivos: 1_all e 2_ovo. Ambos contêm uma lista de itens. 1_all contém itens de 2_ovo mais outros itens. Eu preciso excluir todos os itens de 1_all que são os mesmos que em 2_ovo. Isso é o que eu tenho:

for i in 2_ovo
   do
sed -i "/$i/d" 1_all
done

Então, pegue o valor de 2_ovo e exclua esse valor de 1_all.

Eu sei que variáveis no sed devem ser tratadas com aspas duplas, mas o comando não faz nada. Se eu substituir $ i por um valor real, o valor será excluído do arquivo conforme o esperado. Alguma idéia?

    
por milami 13.10.2017 / 15:23

2 respostas

0

Você precisa ler o arquivo para poder executar o loop.

for i in 'cat /path/to/file/2_ovo'
do
    sed -i "/$i/d" 1_all
done
    
por 13.10.2017 / 15:26
0

Em vez de iniciar sed para cada linha de 2_ovo , você pode usar grep com as opções -Fxf 2_ovo para usar o arquivo como lista de linhas literais para correspondência e -v para inverter a correspondência:

grep -vFxf 2_ovo 1_all > 3_only_the_rest
    
por 13.10.2017 / 15:29

Tags