grep + mv :
grep -vf file1 file2 > /tmp/f2_tmp && mv /tmp/f2_tmp file2
-
-v- selecione linhas não correspondentes -
-f FILE- obtém padrões deFILE -
/tmp/f2_tmp- arquivo temporário
Eu tenho um arquivo de 30.000 códigos de barras Arquivo1, por exemplo
A6KAIIYY
A6KFNRGY
X6LPXV55
X6LQ5217
Eu preciso ler o arquivo1 e, em seguida, procurar por cada código de barras em outro arquivo de 35.000 códigos de barras (arquivo2) e apague a linha se a encontrar. Existe uma maneira que eu possa shell script isso?
grep + mv :
grep -vf file1 file2 > /tmp/f2_tmp && mv /tmp/f2_tmp file2
-v - selecione linhas não correspondentes -f FILE - obtém padrões de FILE
/tmp/f2_tmp - arquivo temporário Se todos os códigos de barras no arquivo1 estiverem no arquivo2, concatene os dois arquivos, classifique e use uniq -u para imprimir somente linhas exclusivas (aquelas no arquivo2 que não estavam no arquivo1):
cat file file2 | sort | uniq -u
Caso contrário, classifique cada arquivo e use diff file1 file2 , o código de barras somente no arquivo1 será prefixado com '<' e aqueles apenas no arquivo2 com '>':
diff file1 file2 | grep -e '^> ' | sed 's/^> //'
Tags shell