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