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
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?
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
Tags sed