Como verificar se a string da primeira coluna do file1 existe no arquivo2?

0

Eu tenho dois arquivos, file1.txt contém strings separadas por vírgulas:

1.1.1.1,string1,comment1
7.7.7.7,string3,comment3
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5

O segundo arquivo, file2.txt , contém strings que podem aparecer na primeira coluna de file1.txt . Eu preciso remover a linha inteira em file1.txt se a string de sua primeira coluna aparecer em file2.txt . Por favor, note que eu não quero mudar o arquivo original, mas eu quero colocar a saída em um novo arquivo.

    
por user9371654 08.10.2018 / 00:27

2 respostas

0

Você pode tentar algo como

#!/bin/bash 
cat file2.txt | while IFS=, read line; do

sed -i "/$(grep $line file1.txt)/d" file1.txt

done

Esteja ciente de que sed -i fará alterações diretas no arquivo1.txt, mas você pode alterar o comando para sed -i.ibk para salvar uma cópia de backup do arquivo original.

Por exemplo

$cat file2.txt 
1.1.1.1
7.7.7.7

$cat file1.txt 
1.1.1.1,string1,comment1
7.7.7.7,string3,comment3
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5

output 
2.2.2.2,string2,comment2
88.88.88.88,string4,comment4
999.999,999,999,string5,comment5
    
por 08.10.2018 / 00:52
0

Por que não simplesmente

grep -vffile2 file1
-f FILE: Obtain patterns from FILE, one per line.
-v:      Invert the sense of matching, to select non-matching lines.
    
por 11.10.2018 / 00:45