Bash scripting problem - compare duas listas e crie uma terceira

2

Eu tenho o começo de um script que estou juntando para checar os hosts Xen ... essa pergunta é bem dupla. Em primeiro lugar, tenho o trecho de código abaixo;

TMPFILE001=/tmp/FILE001.rx
TMPFILE002=/tmp/FILE002.rx
TMPFILE003=/tmp/FILE003.rx

xe vm-list params=uuid,is-control-domain | grep -B1 true | grep uuid | awk {'print $5'} > $TMPFILE001
xe vm-list params=uuid --minimal | tr ',' '\n' > $TMPFILE002

Portanto, isso me dá duas listas, desejo remover qualquer coisa que apareça no FILE002.rx que apareça em FILE001.rx e imprima isso em FILE003.rx.

O ideal é que eu não tivesse nenhum arquivo usado, mas eu estava tentando fazer com que ele funcionasse tentando capturá-los em variáveis.

Assim, se possível, seria melhor executar o script, comparar a saída dos dois comandos e mostrar apenas o restante, uma vez que a saída do comando 2 tenha sido retirada do comando 1.

Saída do comando 1;

cat /tmp/FILE001.rx 
468190e5-c78b-4337-8094-20638353b470
5926bbf3-c48c-4c2a-8113-d7e58520cfe7
3f98ee14-5e60-4e9b-852a-f924ffe80791

Saída do comando 2 (aparada);

cat /tmp/FILE002.rx | head -5
37ae6b9e-8a00-ab10-7e17-3d70ab275b9b
d8208537-0d69-1332-9301-4699d194430f
1cf06668-5450-4d44-a7ba-c2c7b6bcd6b2
7d11c6e3-48ef-0e5e-c6ed-e8f2548533fd
7d3d0ba3-a6d6-d2a7-99f0-06fa74e625fa
    
por Chris Davidson 02.12.2014 / 20:30

3 respostas

4

Veja o comando comm . Pegue os dois arquivos a seguir

f1.txt

item1
item2
item3
item4
item5
item6

f2.txt

item1
item2
item22
item3
item4

Saída

$ comm -23 f1.txt f2.txt
item5
item6

entrada da página man do Comm

    
por 02.12.2014 / 20:57
1

Para responder a uma parte da questão, você pode usar o grep com o sinalizador -F para comparar a diferença entre dois arquivos. Eu então combinei isso com -v para tirar a diferença do que eu exigia;

grep -vxFf $TMPFILE001 $TMPFILE002 > $TMPFILE003
    
por 02.12.2014 / 21:00
1

Ou, se preferir, você pode fazer isso:

diff file1 file2 | grep "<" | sed 's/^<\ //g' > file3

    
por 02.12.2014 / 23:00

Tags